我需要一个变量来保存 22 对整数(网格中的位置),所以我想拥有一个矩阵数组。所以在我的头文件中是:
int points[22][2];
但是当我将以下内容放入对象的构造函数中时:
this->points = {{1,2},{2,3},...};
它说“必须是一个表达式必须是一个可修改的左值”我已经尝试使用 const 关键字并将其作为头文件中的指针,如此处所述 Expression must be a modifiable L-value
我也试过创建一个单独的二维数组然后分配它,但这也不起作用。
int points2 = {{1,2},{2,3},...};
this->points = points2;
我用惯了 Java,对 C++ 不太熟悉。有一个默认构造函数将按上述方式分配值,还有一个构造函数将矩阵作为参数。
以下确实有效:
this->point[1][1] = 4;
但这意味着我无法将另一个值作为参数传递,最终我在默认构造函数中得到了 44 行乱七八糟的代码!我打算使用一个带有 2 个整数的结构并将它们放在一个 vector 中,这看起来有点矫枉过正,这意味着我需要 22 个 vector 插入,然后我什至用手动值调用构造函数,我只是认为必须有是一个更好的方式:)
谢谢
最佳答案
由于您使用的是 C++,因此更好的选择是使用 vector
的 pair
的 int
声明如下:
std::vector<std::pair<int, int> > points;
在你的构造函数中你可以在初始化时指定大小
: points(22),
或者像这样在任何时候设置它:
points.resize(22);
您可以访问个别坐标
points[1].first = 1;
points[1].second = 44;
或与
points[1] = make_pair(1, 44);
或者您可以构建它而不必担心超过其分配的大小
points.push_back(make_pair(1, 44));
等等
关于c++ - 将 int 矩阵数组放入 C++ 对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10133516/