私はSDLミニゲームを作ろうとしています。別のクラスのベクトルポインタを呼び出そうとすると問題が発生します。問題は、私が関数を呼び出すと結果が空ベクトルになるということです。私はすべてのフレーム他のクラスから(ベクトル)ポインタを呼び出す空のサイズを返す
class badBoss {
public:
struct fire {
int type, x, y;
float v, vx, vy;
int angle;
};
std::vector<fire> vFire;
std::vector<fire> *pvFire = &vFire;
void drawBoss(SDL_Renderer *ren) {
vFire.push_back(fire({0,cP1.x+20,cP1.y,cP1.w,cP1.h,v}));
}
} drawBossに呼び出し、このクラスの
。私はvFireポインタを捕獲しようとするが、サイズが常に0
class colision {
public:
badBoss _boss;
void detectColision() {
std::vector<badBoss::fire> lala = *_boss.pvFire;
std::cout << lala.size() << std::endl;
}
}である。このクラスで
。
これはどのように私は正確にポインタの値を取得することができます
int main() {
colision _colision;
bool aktibo = true;
while(aktibo) {
_badBoss.drawBoss(ren);
_colision.detectColision();
}
return 0;
}
私のゲームの主なのですか?
編集:あなたの提案のおかげで、私はそれを修正することができました。これは問題でした: colisionクラスでは、私はbadBossで新しいインスタンスを実行していました。もちろん、vFireベクトルの呼び出しは常に0でした。
今すぐ私は正しいインスタンスパラメタのようなものです...。wallaaa !!すべて完璧に走る!私の愚見で
パブリックメンバー変数としてベクトルとそのポインタを持っていますか? 'detectCollision()'のベクトルに直接アクセスしてベクトルにアクセスしようとしましたか? – user463035818
考えられるシナリオは、 '_boss.pvFire'でアクセスしている' badBoss'インスタンスが 'drawBoss'を呼び出すインスタンスと同じではないということです。 – molbdnilo
こんにちは@ tobi303、私はC++で新しいです。私は他のクラスからアクセスしたいので、公共のような2つの変数があります。また、私は衝突クラスから直接アクセスしようとしますが、同じ変数ではありません。その常に空の –