2014-09-10 61 views
-1

我的代码中出现了极其奇怪的错误。在声明该函数的行上,它表示该字符串不是std的一部分,并且'variable'SDL_Texture loadImage'具有初始值设定项但是不完整类型'。在此之后,它表示预计a;在大括号之前。这段代码也是在一分钟前工作的。我能做些什么来解决它?如果你需要更多的信息,我会很乐意给它。另外,我在Linux上运行,所以也可能有所作为。C++ eclipse奇怪的编译器错误信息

#include <SDL2/SDL.h> 
#include <SDL2/SDL_image.h> 
#include "LevelRenderer.h" 
#include "err_log.h" 

SDL_Texture loadImage(std::string path) 
{ 
    return loadTexture(getResourcePath() + path + ".png", getLevelScreen()); 
} 
+1

“非理性编译器的消息”是有原因的;编译器比你或我更合理。 – TartanLlama 2014-09-10 13:49:11

+1

你在哪里包含''?没有这个头文件,确实没有'std :: string'这样的东西。 – 2014-09-10 13:50:52

+0

在黑暗中进行刺探,但您可能想要返回指向纹理而不是纹理本身的指针(仅从我使用SDL的经验)。 – Carl 2014-09-10 13:54:20

回答

2

这意味着你还没有包含标题SDL_Texture;只有一个声明它。这使得它不完整,你只能做它有限的事情。特别是,你不能创建它的一个实例,因为这个函数在按值返回时会这样做。根据我的google skills,您需要包含<SDL_sysrender.h>

由于您使用的是std::string,因此您还应该包含<string>。这可能是第二个错误的原因;但即使其中一个标题恰好包含了它,最好不要依赖它。

+0

不幸的是,这并没有奏效。它仍然给了我同样的错误。 – 2014-09-11 00:01:04

1

两个问题。

其中一个,你忘了#include <string>

二,loadTexture返回一个指针,所以你要

SDL_Texture* loadImage(std::string path) 
{ 
    return loadTexture(getResourcePath() + path + ".png", getLevelScreen()); 
} 
+0

我尝试了两种方法,但没有奏效。 – 2014-09-11 00:01:23