C ++类 - 如何将自定义类型的向量传递给函数

时间:2011-04-15 03:28:40

标签: c++ class parameters vector arguments

我正在尝试开发一个带有函数的类,该函数可以将项目的向量作为其参数。

如果我使用int类型的矢量或其他原语,我可以使它工作正常,但是我无法使用对象向量。

例如:

在我的标题文件中:

int influenceParticles(vector<Particle> particles);

这就是我所追求的,但不会编译(错误陈述为"'Particle' was not declared in this scope")。

particle.h文件已包含在此头文件的顶部。

澄清

这是给我错误的.h文件

#ifndef _PARTICLE_ATTRACTOR
#define _PARTICLE_ATTRACTOR

#include "ofMain.h"
#include "particle.h"


class ParticleAttractor {

    //private
public:

    ParticleAttractor(int posX, int posY); //constructor (void)

    int influenceParticles(vector<Particle> particles);

};


#endif 

2 个答案:

答案 0 :(得分:6)

也许你有循环包含,即。如果ParticleAttractor.h还包含Particle.h。要解决这个问题,你应该在ParticleAttractor.h中进行粒子的前向声明:

class Particle;

您还应该考虑通过引用传递向量以避免复制:

int influenceParticles(vector<Particle>& particles);

答案 1 :(得分:0)

首先Particle必须是已定义的类型。这个定义应该有效:

int influenceParticles(vector<vector<int> > particles); 

对于练习,最好使用by reference参数类型而不是值。因此最好将其定义为:

int influenceParticles(vector<vector<int> >& particles);