Я использую C++ для очень небольшой части моего проекта. Я должен что-то неправильно кодировать, но мои знания о C++ - это то, что есть, и я не могу обойти это ...Ошибка программирования начинающего программиста C++: «Необъявленный идентификатор»?
См. Ниже файлы AbstractContactListener.h и .mm. Проблема заключается в методе isFixtureCollidingWithFixtureOfType (...), я не могу получить доступ к вектору _contact. Что я могу делать неправильно?
Заголовок:
struct JRContact {
b2Fixture *fixtureA;
b2Fixture *fixtureB;
bool operator==(const JRContact& other) const
{
return (fixtureA == other.fixtureA) && (fixtureB == other.fixtureB);
}
};
class AbstractContactListener : public b2ContactListener {
id contactHandler;
public:
std::vector<JRContact>_contacts;
AbstractContactListener(id handler);
~AbstractContactListener();
void isFixtureCollidingWithFixtureOfType(b2Fixture fix, int type);
virtual void BeginContact(b2Contact* contact);
virtual void EndContact(b2Contact* contact);
};
Реализация:
AbstractContactListener::AbstractContactListener(id handler) : _contacts() {
contactHandler = handler;
}
AbstractContactListener::~AbstractContactListener() {
}
void isFixtureCollidingWithFixtureOfType(b2Fixture fix, int type){
std::vector<JRContact>::iterator ct;
// Next line is faulty... can't call _contacts.begin()
// xCode says: "Use of undeclared identifier _contacts"
ct = _contacts.begin();
}
void AbstractContactListener::BeginContact(b2Contact* contact) {
// ...
}
void AbstractContactListener::EndContact(b2Contact* contact) {
// ...
}
Необъявленная? Хм. Я думал, что объявляю его в заголовке сразу после ключевого слова «public:».
Что я могу делать неправильно здесь? спасибо большое! J.
Эй спасибо за это объяснение :) Отличное решение! n.b. id AbstractContactListener действительно был объявлен вне образца кода. Спасибо за указание, хотя ;-) – Jem