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需要的操作。