gpt4 book ai didi

c++ - 不能出现在常量表达式中

转载 作者:行者123 更新时间:2023-11-28 03:02:58 24 4
gpt4 key购买 nike

在下面的 C++ 程序中:

class matrix {
public:
int n;
double **x;

matrix(int n) : n(n) {
x=new double[n][n];
for (int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
x[i][j]=0;
}
}
}
...

我收到以下错误:“'n' 不能出现在常量表达式中”。由于我对 cpp 比较陌生,所以我真的不知道为什么会出现此错误(特别是因为我对一个名为 vector 的类做了几乎完全相同的事情并且根本没有问题)以及如何修复它。如果有任何帮助,我将不胜感激。

最佳答案

在这个表达式中

x=new double[n][n];

除了最左边的所有维度都应该是常量表达式。

正确的做法是

x = new double *[n];
for ( int i = 0; i < n; i++ ) x[i] = new double[n];

for (int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
x[i][j]=0;
}
}

或者,如果您的编译器支持 C++ 2011,那么无需在循环中进行显式初始化,它就可以更简单地完成

x = new double *[n];
for ( int i = 0; i < n; i++ ) x[i] = new double[n] {};

关于c++ - 不能出现在常量表达式中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20313343/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com