创建没有默认构造函数的结构数组

时间:2012-07-22 12:53:28

标签: c++

  

可能重复:
  c++ Object array initialization without default constructor

我有结构:

struct aa 
{
    int a;
    char  b [255];

    aa(int number)
    {
        cout<<"creating structure "<<number<<"\n";

    }

    ~aa()
    {
        cout<<"destroying structure"; 
    }
};

我正在尝试创建此结构的数组,但这不起作用:

aa *ss = new aa[3](1);

这给我一个编译器错误。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

aa(int number=1)
・・・
aa *ss = new aa[3];

template <int N>
struct aa
・・・
aa(int number = N)
・・・
aa<1> *ss = new aa<1>[3];

#include <new>
・・・
aa(int number=0)
・・・

int main(){
    aa ss[3];//local value
    for(int i=0;i<3;++i)
        new (ss + i) aa(1);//replacement