2014-02-20 72 views
-1

在C++中,当初始化每个对象,我有一个类CMyObject如下,其中CData的是另一个类名:如何分配一个对象阵列

Class CMyObject 
{ 
CMyObject(CData& Data): m_Data(Data) {}; 
virtual ~CMyObject(void); 

private: 
    const CData& m_Data; 
} 

当分配一个CMyObject例如,我可以做如下:

P = new CMyObject(MyData); 

但是,如果我想创建一个CMyObject的数组,那么我可以按如下方式进行操作吗?

P = new CMyObject(MyData)[10]; 
+2

使用一个向量:'std :: vector p(10,CMyObject(Data));' – 0x499602D2

+0

你需要用不同的东西初始化数组的每个对象吗? –

回答

1

您可以使用初始化列表(我用了4节省一些打字,但你的想法):

CMyObject* P = new CMyObject[4]{MyData, MyData, MyData, MyData}; 

但更好的是,使用std::vector

std::vector<CMyObject> P(10, MyData); 
+0

将std :: vector P(10,MyData)比新CMyObject [10]消耗更多内存? – alancc

+0

@ user2704265数量很少。关于两个指针的大小。 – juanchopanza