创建类数组时出错

Error creating array of class

本文关键字:出错 数组 创建      更新时间:2023-10-16

我有一个如下形式的类:

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]

首先应该像下面这样创建对象数组:

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);

编译器会告诉你哪里出了问题。你不能这样做:

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};