我不確定如何在自己的類中創建一個對象數組。例如:如何在自己的類中聲明一個對象數組?
class A {
public:
const static int MAX_SIZE = 10;
private:
A arrayOfOBjects[MAX_SIZE];
}
我得到一個錯誤,說「現在允許不完整的類型」我該怎麼辦?如果我從類A中的另一個類聲明一個對象數組,它將工作..但是,如何在它自己的類中創建一個對象數組?
我不確定如何在自己的類中創建一個對象數組。例如:如何在自己的類中聲明一個對象數組?
class A {
public:
const static int MAX_SIZE = 10;
private:
A arrayOfOBjects[MAX_SIZE];
}
我得到一個錯誤,說「現在允許不完整的類型」我該怎麼辦?如果我從類A中的另一個類聲明一個對象數組,它將工作..但是,如何在它自己的類中創建一個對象數組?
使用指針。或shared_ptr等並動態分配對象
class A {
public:
const static int MAX_SIZE = 10;
private:
A * arrayOfOBjects[MAX_SIZE];
}
你在哪裏看到共享所有權語義的要求? –
顯然,您本身不能包含對象的實例。這將需要無限量的存儲;-)
出於同樣的原因,你不能包含幾個。也許你的意思是數組是一個靜態成員,不會添加到一個實例的狀態?
通過使用指針就可以解決這個問題
class A {
public:
const static int MAX_SIZE = 10;
void allocate(){
arrayOfOBjects=new A[MAX_SIZE];
}
private:
A *arrayOfOBjects;
};
您可以使用此如下
A a;
a.allocate();
一個類不能包含自己的類型的成員。您需要持有一組智能指針到'A'。 – juanchopanza
看看這個:http://stackoverflow.com/q/16756876/2040040 – johnchen902
@juanchopanza怎麼樣'std :: array '? –