动态创建的对象数组需要使用非默认构造函数,我遇到的问题是语法方面的。在我的想法中,我能够做到这一点的事实是
int * somePtr = new int[5];
这意味着我应该能够做到这一点。
IntegerSet* someSet = new IntegerSet(this->getLength())[5];
其中IntegerSet是我创建的一个代表整数集合的类。这段代码在IntegerSets的一个成员函数内部执行。当我尝试运行它时,我收到一个语法错误:"无法将IntegerSet转换为IntegerSet*"
我理解这意味着这两种类型不等效,但是除了第二部分必须传递构造函数参数列表之外,我看不出在执行第一部分和第二部分时有什么区别。因此,在代码的那一部分,我怀疑我语法有误。
int
是一种类型,而new IntegerSet(this->getLength())
不是。数组创建只适用于类型。其他任何东西都被视为元素访问。 - thriqon