Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 创建类的数组时出错_C++ - Fatal编程技术网

C++ 创建类的数组时出错

C++ 创建类的数组时出错,c++,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 [-fper

我有一个如下形式的班级:

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

for(int i=0;i您应该首先创建如下所示的对象数组:

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

for(int i=0;i编译器正在准确地告诉您出了什么问题。您不能这样做:

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 = new T[20](baseFileName);
更具体地说,当您使用new时,您不能有
(baseFileName)
位。只需向t添加一个默认构造函数并自己填充即可。也许可以向t类添加一个方法,该方法可以为您返回数组,而无需在每次需要构造数组时循环

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

您收到的错误很难弄清楚。该语言不支持您使用的数组初始化方式。如果您正在寻找替代方法,请尝试
std::vector s(20,t(baseFileName));
(坦白地说,您无论如何都应该使用它,而不是允许原始指针拥有动态资源)。查看您接收到的错误将很难让您更清楚。该语言不支持您使用的数组初始化方式。如果您正在寻找替代方法,请尝试
std::vector s(20,t(baseFileName));
(坦白地说,您无论如何都应该使用它,而不是允许原始指针拥有动态资源)。请看,这不起作用,类型没有默认构造函数。请仔细查看我的代码,我建议添加默认构造函数:)这不起作用,类型没有默认构造函数。请仔细查看我的代码,我建议添加默认构造函数:)请注意,最后一个示例可能不会执行OP需要的操作。请注意,最后一个示例可能不会执行OP需要的操作。