playersystemとrocketsystemはsystemから継承し、playersystemにはrocketsystemへのポインタが含まれています。ロケットシステムが継承するはずのシステムにあるものにアクセスしようとすると、エラーが発生します。実行時エラーは「式を評価できません」ですビジュアルスタジオでブレークポイントを設定し、マウスを位置ベクトルの上に置いたところ、それはそう言いました。
編集:後世のために、これは私がやっていたことであり、それが機能していることが判明しました。私は、ロケットシステムポインタを何らかの理由でnullに設定していました
class Vector2D
{
public:
float x;
float y;
Vector2D(float x_, float y_) :x(x_),y(y_){}
};
class System
{
protected:
vector<Vector2D> position;
public:
void addEntity(Vector2D newPos)
{
position.push_back(newPos);
}
};
class projectile :public System
{
public:
void createRocket(Vector2D pos)
{
addEntity(pos);
}
};
class player : public System
{
public:
projectile* rocketSystem;
void init(projectile* rocketsys){rocketSystem = rocketsys;}
void fireRocket(Vector2D pos)
{
rocketSystem->createRocket(pos);
}
};
int main (int argc, char * const argv[])
{
player* PlayerSystem = new player;
projectile* RocketSystem = new projectile;
PlayerSystem->init(RocketSystem);
PlayerSystem->fireRocket(Vector2D(0,0));
return 0;
}