Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在类中使用向量_C++_Class_Vector - Fatal编程技术网

C++ 如何在类中使用向量

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,

我使用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, 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));