2013-09-22 87 views
3

我想擁有一個對象數組。 每個對象都有一個帶有一個參數的構造函數。 我的對象數組初始化:構造函數有參數的對象數組

set s[]=new set[n]; // creates an array of n objects of class set 

然而,它說,我不能這樣做,因爲我的構造函數需要一個參數。 我的構造函數:

set(int size){} 

我已經理解了問題,但不能認爲一個好的解決方案。 我能做些什麼,要麼初始化seperately每個對象:

set s1(size); 
set s2(size); //& so on..... 

或刪除構造函數的參數......這兩種解決方案都不能令人十分滿意

誰能幫我找到了更好的解決方案呢?

注意:每個對象的「大小」值是不同的/動態

回答

4
#include <vector> 
... 
std::vector<set> s(n, set(x,y,z)); 

這將創建n個set對象的矢量(動態可調整大小的陣列),每個的set(x,y,z)副本。如果你要使用各種元素不同的構造,或同一構造帶不同參數:

std::vector<set> s;  // create empty vector 
s.push_back(set(x,y,z)); 
s.push_back(set(y,z,x)); 
... 
... // repeat until s.size() == n 
+0

謝謝,我感謝你的幫助。 – Sumedh

0

可以做出不同的構造函數沒有參數,初始化值,然後設置每個變量的值環路

set() { 
    this.size = 0; 
} 

,然後在for循環中初始化與所需size每個元素,使用直接結合或吸氣/ setter函數。

for(int i = 0; i < n; i++) { 
    s[i].size = value[i]; // or create a setter function 
} 
+0

是的,我以前也有同樣的想法,但我特別想用構造函數初始化它。 感謝您的努力。 – Sumedh