我將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 2012-02-05 18:29:44