2013-05-26 57 views
0

我不確定如何在自己的類中創建一個對象數組。例如:如何在自己的類中聲明一個對象數組?

class A { 
public: 
    const static int MAX_SIZE = 10; 

private: 
    A arrayOfOBjects[MAX_SIZE]; 


} 

我得到一個錯誤,說「現在允許不完整的類型」我該怎麼辦?如果我從類A中的另一個類聲明一個對象數組,它將工作..但是,如何在它自己的類中創建一個對象數組?

+1

一個類不能包含自己的類型的成員。您需要持有一組智能指針到'A'。 – juanchopanza

+0

看看這個:http://stackoverflow.com/q/16756876/2040040 – johnchen902

+0

@juanchopanza怎麼樣'std :: array '? –

回答

0

使用指針。或shared_ptr等並動態分配對象

class A { 
public: 
    const static int MAX_SIZE = 10; 

private: 
    A * arrayOfOBjects[MAX_SIZE]; 


} 
+0

你在哪裏看到共享所有權語義的要求? –

-1

顯然,您本身不能包含對象的實例。這將需要無限量的存儲;-)

出於同樣的原因,你不能包含幾個。也許你的意思是數組是一個靜態成員,不會添加到一個實例的狀態?

0

通過使用指針就可以解決這個問題

class A { 
public: 
    const static int MAX_SIZE = 10; 
    void allocate(){ 
    arrayOfOBjects=new A[MAX_SIZE]; 
    } 
private: 
    A *arrayOfOBjects; 
}; 

您可以使用此如下

A a; 
a.allocate(); 
相關問題