プロジェクトのごく一部に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。