我正在尝试开发一个带有函数的类,该函数可以将项目的向量作为其参数。
如果我使用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
答案 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);