0

如何在构造函数中使用参数初始化结构数组?现在我有这个代码:

    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

还有一个问题。如何使用结构和构造函数参数初始化向量?

4

2 回答 2

2

您不能以这种方式初始化数组。它应该写成:

roundMatrix rounds[roundsNumber] = {teamsNumber, teamsNuber, ...);

或者,您需要为roundMatrix类实现一个默认构造函数,该构造函数将自动初始化数组中的项目。

于 2013-11-14T11:56:39.600 回答
2

起初你的结构是类。struct应该在没有方法、继承、封装和其他类的东西的情况下在 C++ 中使用,与标准C代码中相同。

接下来,类名应该大写:名字的第一个字符应该是大写的,名字中的每个新单词都应该从大写字符开始。顺便说一句,您的公司代码约定可能会覆盖这个在 C++ 代码中几乎无处不在的默认约定。

最后:如果您有一个此类的对象数组,您不能在初始化期间为此类的每个对象调用构造函数。你可以这样做:

roundMatrix *rounds = new roundMatrix[roundsNumber];

for(i = 0; i < roundsNumber; i++)
    rounds[i] = roundMatrix(teamsNumber);
于 2013-11-14T11:57:57.873 回答