【发布时间】:2012-04-12 23:59:55
【问题描述】:
我需要一个变量来保存 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 个整数的结构并将它们放在一个向量中,这似乎有点矫枉过正,这意味着我需要 22 个向量插入,然后我什至用手动值调用构造函数,我只是认为必须做一个更好的方法:)
谢谢
【问题讨论】:
-
int points[22][2];不是矩阵,它是一个 C 数组,它不支持该编译器所需的初始化语义。使用a proper matrix library就不会出现这个问题了。
标签: c++ arrays visual-c++ initialization