我有一个以下形式的课程:
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]
答案 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};