C++ 从另一个 class return 空大小调用(向量)指针
C++ calling to (vector)pointer from another class return empty size
我正在尝试制作 SDL 迷你游戏,但当我尝试从另一个 class 调用矢量指针时遇到问题。问题是当我调用该函数时,结果是一个空向量。
在这个class中我每帧调用drawBoss
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}));
}
};
在这个 class 中,我尝试捕获 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;
}
如何正确获取指针的值?
编辑:感谢您的建议,我可以修复它。这是问题所在:
在冲突中 class 我在 badBoss 上做了一个新实例,当然,当对 vFire 向量的调用总是 0.
现在我用正确的实例从主函数调用碰撞,比如参数和....wallaaa!!一切运行完美!
依我愚见,这是向量指针初始化的问题:
class badBoss {
public:
struct fire {
int type, x, y;
float v, vx, vy;
int angle;
};
std::vector<fire> *vFire = new std::vector<fire>();
// I don't think it's even needed
//std::vector<fire> *pvFire = &vFire;
void drawBoss(SDL_Renderer *ren) {
// Isn't one value missing?
vFire->push_back(fire({0,cP1.x+20,cP1.y,cP1.w,cP1.h,v}));
}
};
现在,对于数据冲突
class collision {
public:
void detectCollision() {
std::cout << _boss.vFire->size() << std::endl;
}
};
希望对您有所帮助!
参考:
Pointer to a Vector
@molbdnilo 有一个很好的观点。你应该在 colision class 中添加一个构造函数(或 setter)来初始化 _boss 对象。即
colision(badBoss boss) {
_boss = boss;
}
我正在尝试制作 SDL 迷你游戏,但当我尝试从另一个 class 调用矢量指针时遇到问题。问题是当我调用该函数时,结果是一个空向量。
在这个class中我每帧调用drawBoss
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}));
}
};
在这个 class 中,我尝试捕获 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;
}
如何正确获取指针的值?
编辑:感谢您的建议,我可以修复它。这是问题所在: 在冲突中 class 我在 badBoss 上做了一个新实例,当然,当对 vFire 向量的调用总是 0.
现在我用正确的实例从主函数调用碰撞,比如参数和....wallaaa!!一切运行完美!
依我愚见,这是向量指针初始化的问题:
class badBoss {
public:
struct fire {
int type, x, y;
float v, vx, vy;
int angle;
};
std::vector<fire> *vFire = new std::vector<fire>();
// I don't think it's even needed
//std::vector<fire> *pvFire = &vFire;
void drawBoss(SDL_Renderer *ren) {
// Isn't one value missing?
vFire->push_back(fire({0,cP1.x+20,cP1.y,cP1.w,cP1.h,v}));
}
};
现在,对于数据冲突
class collision {
public:
void detectCollision() {
std::cout << _boss.vFire->size() << std::endl;
}
};
希望对您有所帮助! 参考: Pointer to a Vector
@molbdnilo 有一个很好的观点。你应该在 colision class 中添加一个构造函数(或 setter)来初始化 _boss 对象。即
colision(badBoss boss) {
_boss = boss;
}