创建类数组时出错

时间:2014-05-11 06:09:55

标签: c++

我有一个以下形式的课程:

class T
{
   public:
   /// Constructor
   T(const std::string& baseName);
};

现在在main()方法中我试图使用:

创建类对象的数组
  T* s = new T[20](baseFileName); 

我没有得到我犯错的地方......有人可以帮忙。

我得到的错误是:

error: ISO C++ forbids initialization in array new [-fpermissive]

2 个答案:

答案 0 :(得分:2)

您应该首先创建如下所示的对象数组:

T* s = new T[20]; //allocating 20 objects

现在你可以通过做一些改变来调用你想要的功能:

class T
{
   public:
   T(){};//default constructor
   /// Constructor
   SetValue(const std::string& baseName);
};

使用循环调用该函数:

for( int i=0 ; i<20;i++)
s[i].SetValue(baseString);

答案 1 :(得分:2)

编译器正在告诉你到底出了什么问题。你不能这样做:

T* s = new T[20](baseFileName);

更具体地说,当您使用new时,不能使用(baseFileName)位。只需将一个默认构造函数添加到T并自行填充。也许为你的T类添加一个方法,为你返回数组,而不必在每次需要构建时循环。

T * s = new T[20];
for(int i = 0; i < 20; i++) { s[i].setName(baseFileName); }

或者因为您已经知道数组在编译时会是什么样子:

T s [20] {baseFileName, baseFileName,baseFileName, baseFileName,baseFileName, baseFileName,baseFileName, baseFileName,baseFileName, baseFileName,baseFileName, baseFileName,baseFileName, baseFileName,baseFileName, baseFileName,baseFileName, baseFileName,baseFileName, baseFileName};