如何在构造函数中使用参数初始化struct数组? 现在我有了这段代码:
struct roundMatrix {
private:
int **matrix;
public:
roundMatrix(int teamsNumber) {
matrix = new int*[teamsNumber];
for(int i=0;i<teamsNumber;i++) {
matrix[i] = new int[teamsNumber];
}
}
int addPartners(int first, int second) {
if(matrix[first][second] == -1 && matrix[second][first] == -1) {
matrix[first][second] = 0;
matrix[second][first] = 0;
}
else {
return -1;
}
return 0;
}
};
...
然后我需要使用参数:
来初始化roundMatrix数组 roundMatrix rounds[roundsNumber](teamsNumber);
我收到了一个错误:
variable-sized object 'rounds' may not be initialized
还有一个问题。如何使用struct和构造函数参数初始化vector?
答案 0 :(得分:2)
您不能以这种方式初始化数组。它应该写成:
roundMatrix rounds[roundsNumber] = {teamsNumber, teamsNuber, ...);
或者,您需要为roundMatrix
类实现一个默认构造函数,它将自动初始化数组中的项目。
答案 1 :(得分:2)
首先你的结构是类。 struct
应该在C ++中使用,不需要方法,继承,封装和其他类的东西,就像标准C
代码一样。
接下来,类名应该在上面的驼峰案例中:名称的第一个字符应该是大写的,名称中的每个新单词都应该从大写字符开始。顺便说一句,您的公司代码约定可能会覆盖此默认约定,该约定几乎用于C ++代码中的所有位置。
最后:如果你有这个类的对象数组,你不能在初始化期间为这个类的每个对象调用构造函数。你可以这样做:
roundMatrix *rounds = new roundMatrix[roundsNumber];
for(i = 0; i < roundsNumber; i++)
rounds[i] = roundMatrix(teamsNumber);