请查看下面的代码,这是一个简单的主题,但我不知道。
class trial{
public:
trial(){
y = -1;
}
trial(int x){
y = x;
}
public:
int y;
};
int main() {
trial *trialPtr = new trial(); // creates a dynamic object with empty constructor
trial *trialPtr1 = new trial(1); // creates a dynamic object with overloaded constructor
trial *trialPtr2 = new trial[2]; // creates two dynamic objects with empty constructor
return 0;
}
我的问题是,如何使用重载构造函数创建两个动态对象?
答案 0 :(得分:3)
This is not possible with an built in array
但是考虑使用std :: vector
vector<trial> var(10, trail(4));
这有一个额外的好处,你不需要担心内存管理
添加一个难看的解决方案,因为OP显然想要它。在创建阵列之前,将 FOO 设置为适当的值。 请在downvoting之前阅读评论
int FOO = -1;
class trial{
public:
trial(){
y = FOO;
}
trial(int x){
y = x;
}
public:
int y;
};
int main(int argc, _TCHAR* argv[])
{
FOO = 4;
trial *trialPtr2 = new trial[2];
return 0;
}
答案 1 :(得分:2)
在C ++ 98/03中,数组是有问题的,因为你通常不能完全自由地初始化它们。 C ++ 11通过统一初始化来解决这个问题。现在你可以说,
new trial[2] { 1, 1 };
答案 2 :(得分:0)
在C ++中没有语法方法可以做到这一点,就像在这个(不正确的)示例中一样: 试用* trialPtr2 =新试验2; 如果要使用数组,则必须执行“for”循环:
trial *trialPtr2[] = new (*trial)[2];
for (int i = 0; i < 2; i++)
{
trialPtr2[i] = new trial(3);
}