ошибка C2228: слева от «.draw» должен быть класс / структура / объединение - PullRequest
2 голосов
/ 26 августа 2011

хорошо, я думаю, что проблема в том, что я не инициализировал вектор но я не знаю ... в любом случае, я получаю сообщение об ошибке, говорящее, что это неправильно:

drawable.at(i).draw();

с вектором, объявленным в заголовочном файле как:

vector<render*> drawable;

это вектор указателей рендеринга, так как у меня есть целая куча классов, которые нужно нарисовать, и все они являются потомками родителя с чистыми виртуальными функциями в нем, это неправильно?

Кстати, чтобы посадить ребенка, я использовал это: заголовок:

ShaysWorld * sw;

касты:

sw = new ShaysWorld;
drawable.push_back(sw);

Что я могу сделать, чтобы решить проблему слева от «.draw»?

Ответы [ 3 ]

6 голосов
/ 26 августа 2011

drawable.at(i)->draw();, поскольку drawable.at (i) является рендером указатель

1 голос
/ 26 августа 2011

Я думаю, что проблема в том, что я не инициализировал вектор

Нет. Вы должны сразу понять, что это не проблема, потому что вы получаете сообщение об ошибке от компилятора. Неспособность инициализировать вещи вызывает проблемы при запуске программы. Вы еще не запустили его, потому что он не скомпилирован, потому что вы получаете сообщение об ошибке компилятора.

это вектор указателей рендеринга

Да, это так. Поэтому, когда вы получаете элемент из этого вектора, у вас есть указатель. Вы не можете вызывать функцию-член для указателя, потому что указатель не является объектом - он указывает на объект.

Вот что говорится в сообщении об ошибке: «слева от« .draw »должен быть класс / структура / объединение». Это означает именно то, что говорится: слева от .draw находится drawable.at(i), и тип этого выражения не является классом, структурой или объединением - это указатель на класс.

1 голос
/ 26 августа 2011

Попробуйте LLVM :

_484_0.cc:8:20: error: member reference type 'Renderer *' is a pointer;
                       maybe you meant to use '->'?
    renderers.at(i).draw();
    ~~~~~~~~~~~~~~~^
                   ->
1 error generated.

Или как использование отличного компилятора улучшает пользовательский опыт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...