C++ 如何在类中使用向量
我使用Fireworks init函数将粒子存储到粒子向量类中。 当我尝试在update()函数中检索粒子向量的计数时,粒子向量为空。为什么? Fireworks.cpp类:C++ 如何在类中使用向量,c++,class,vector,C++,Class,Vector,我使用Fireworks init函数将粒子存储到粒子向量类中。 当我尝试在update()函数中检索粒子向量的计数时,粒子向量为空。为什么? Fireworks.cpp类: void Fireworks::init(){ float x = randf(); float y = - 1 * randf(); //Going UP float z = randf(); Particle part(position,Vector3f(x,y,z), color,
void Fireworks::init(){
float x = randf();
float y = - 1 * randf(); //Going UP
float z = randf();
Particle part(position,Vector3f(x,y,z), color, randInt(1,50));
particles.push_back(part);
}
bool Fireworks::update(){
Particle particle;
int count = particles.size(); //Total num of particles in system
cout << particles.size() << " ";
}
class Fireworks: public ParticleSystem {
private:
void init();
public:
Fireworks(Vector3f pos, Vector3f col) {
position = pos;
color = col;
init();
}
virtual bool update();
};
这将引入未定义的行为。右侧创建一个临时表达式,该表达式将在完整表达式结束后立即删除(即在;
之后)PS
将指向该行之后的已删除对象-对其执行任何操作都是未定义的行为
使用new
PS = new Fireworks(Vector3f(0,0,0), Vector3f(200,0,255));
此外,必须从声明为返回某物(非void)的所有函数返回。它们是否是虚拟的并不重要。这个问题缺少一些代码。什么是类声明?你的函数是如何使用的?从你发布的代码中根本不清楚你想做什么。您是否可以发布一个说明问题的最小代码示例?您“无法在更新函数中检索它”。但是在您发布的代码中,您甚至没有尝试在update函数中检索它。请解释你想做什么,以及到底是什么问题,我们猜不出来。对不起,我已经编辑了这个问题,希望现在更清楚。@jogojapan您好,我在底部添加了main.cpp的代码。谢谢。请务必打开编译器的警告,它应该告诉您该行有问题。再次感谢您花时间帮助我。非常感谢。祝你周末愉快@juanchopanza谢谢你的提醒。对不起,这里的新手,不知道有一个接受回答按钮:p
ParticleSystem *PS;
int main( int argc, char *argv[] ) {
PS = &Fireworks(Vector3f(0,0,0), Vector3f(200,0,255));
glutIdleFunc(move);
}
void move()
{
PS->update();
}
PS = &Fireworks(Vector3f(0,0,0), Vector3f(200,0,255));
PS = new Fireworks(Vector3f(0,0,0), Vector3f(200,0,255));