2014-09-10 2 views
-1

Я получаю чрезвычайно странные ошибки в своем коде. В строке, где объявлена ​​функция, говорится, что строка не является частью std, и что «переменная« SDL_Texture loadImage »имеет инициализатор, но неполный тип». На линии после этого говорится, что она ожидала; перед фигурной скобкой. Этот же фрагмент кода буквально работал минуту назад. Что я могу сделать, чтобы исправить это? Если вам нужна дополнительная информация, я с удовольствием дам ее. Кроме того, я работаю на 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

"Irrational сообщения компилятора" там по причине; компиляторы гораздо более рациональны, чем вы или я. – TartanLlama

+1

И где вы включаете ''? Без этого заголовочного файла действительно нет такой вещи, как 'std :: string'. –

+0

Взяв удар в темноте здесь, но вы, вероятно, захотите вернуть указатель на текстуру, а не на текстуру (только из моего опыта работы с SDL). – Carl

ответ

2

Это значит, что вы не указали заголовок, который определяет SDL_Texture; только тот, кто его объявляет. Это делает неполным, и вы можете делать с ним ограниченные вещи. В частности, вы не можете создать экземпляр, как это делает функция, когда она возвращает значение.

Согласно моему google skills, вам необходимо включить <SDL_sysrender.h>.

Вы также должны указать <string>, так как используете std::string. Это может быть причиной второй ошибки; но даже если один из других заголовков включает его для вас, лучше не полагаться на это.

+0

К сожалению, это не сработало. Это все равно дало мне те же ошибки. –

1

Две проблемы.

Один, вы забыли #include <string>.

Два, loadTexture возвращает указатель, так что вы хотите

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

Я пробовал оба, и это не сработало. –

Смежные вопросы