使用构造函数参数初始化结构数组

Initializing struct array with constructor parameters

本文关键字:结构 数组 初始化 参数 构造函数      更新时间:2023-10-16

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

    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 rounds[roundsNumber](teamsNumber);

我收到一个错误:

variable-sized object 'rounds' may not be initialized

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

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

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

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

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

接下来,类名应为大写:名称的第一个字符应为大写,名称中的每个新单词应以大写字符开头。顺便说一下,您的公司代码约定可能会覆盖此默认约定,该约定几乎在代码C++任何地方使用。

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

roundMatrix *rounds = new roundMatrix[roundsNumber];
for(i = 0; i < roundsNumber; i++)
    rounds[i] = roundMatrix(teamsNumber);