2011-04-15 33 views
0

我試圖用一個函數來開發一個類,該函數可以將參數的向量作爲參數。C++類 - 如何將自定義類型的向量傳遞到函數

如果我使用類型爲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

請剪切並粘貼您可以構造的顯示錯誤的絕對最短的完整程序。提示:你應該能夠把它降到6或7行。 – 2011-04-15 03:30:06

+1

你的particle.h文件是否也包含了影響粒子的頭文件? – GWW 2011-04-15 03:30:20

+0

你應該直接包含vector.h,並將vector定義爲std :: vector,如果這確實是std :: vector。 – cgmb 2011-04-15 03:38:13

回答

6

也許你有循環包括,即。如果ParticleAttractor.h也包含Particle.h。爲了解決這個問題,你應該粒子的向前聲明中ParticleAttractor.h:

class Particle; 

你也應該考慮通過引用傳遞的載體,以避免拷貝:

int influenceParticles(vector<Particle>& particles); 
+1

非常好,就是我以後的樣子。也感謝參考提示 – 2011-04-15 03:40:26

0

首先Particle必須是一個定義類型。這個定義應該工作:

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

對於實踐中,更好地引用參數類型,而不是按值使用。所以最好將它定義爲:

int influenceParticles(vector<vector<int> >& particles); 
相關問題