【发布时间】:2018-05-26 12:36:26
【问题描述】:
我是 C++ 的新手,我必须解决大学的任务,我必须制作一个结构矩阵并用随机整数填充它。我用“!”标记了该行出现错误的地方。 这是错误 C2131(Visual C++ 编译器)。它说“表达式没有计算为常数”。
struct Matrix{
int rows;
int columns;
Matrix(int r, int c){
rows = r, columns = c;
}
int produceMatrix(){
int matrix[rows][columns]; "!"
for(int i = 0; i != rows; i++){
for(int j = 0; j != columns; j++){
matrix[i][j] = rand() %10 +1;
}
}
return 0;
}
int showMatrix(){
for(int i = 0; i != rows; i++){
for(int j = 0; j != columns; j++){
cout << matrix[i][j]<< endl;
}
}
}
};
int main()
{
srand(time(0));
Matrix a(3, 4);
}
【问题讨论】:
-
因为 C++ 没有变长数组。
rows和columns需要是编译时常量才能工作 -
我对 C++ 也不是很熟悉,但我想在结构中定义函数是不可能的。您需要改用“类”
-
@mangusta 完全错误。
struct和class在 C++ 中是一样的(除了默认访问和继承修饰符) -
@UnholySheep 是的,我重新检查了 C++ 规范,你是对的
-
另外,在一个类方法中声明的向量/数组与在另一个类方法中使用的任何东西完全无关。您试图在一个类方法中声明一个本地数组/向量,并在另一个类方法中使用它。 C++ 不能以这种方式工作。您的数组/向量必须是类成员。与其在每个问题上来回访问 stackoverflow.com,不如阅读你的 C++ 书籍。 stackoverflow.com 不是 C++ 教程,也不能替代 good C++ book。
标签: c++