在类中定义动态数组 c++

我想在类abc中定义一个二维数组double a[X][Y],其中x,y的值我想在随后再赋值。但是被提示错误:abc::X error:表达式必须含有常量。请问如何用动态数组在类abc中实现我想要的目的呀?
2026年09月26日 05:01
有5个网友回答
网友(1):

只写出与动态分配空间相关的,其它的类abc中的元素,你自己再加上去就行了。
#include "stdlib.h"
class abc
{
privata:
double **a;
int x;//数组行数
int y;//数组列数
public:
void allocArray(void)
{
a=(double **)malloc(sizeof(double *)*x);
for(int i=0;i a[i]=(double *)malloc(sizeof(double)*y);

}
void setArrayColAndRow(int col,int row)
{
x=col;
y=row
}
void freeSpace()
{
free(a);
}
}
用之前要先调setArrayColAndRow,再调allocArray,使用完之后,调用freeSpace,这是在C++里用C实现的,也可以用new的办法来做。

网友(2):

必须规定X,Y的值,不能用变量。要动态实现,必须用new double[x]或malloc

网友(3):

在定义数组的时候要么初始化,要么指定大小。不允许定义未初始化且不确定大小的数组。

你可以这样定义这个类
class abc
{
public:
const int x;
const int y;
double **a;

public:
abc(int m,int n):x(m),y(n)
{
if (x>0 && y>0)
{
a = new double *[y];

for (int i=0; i a[i] = new double[n];
}
else
a = NULL;
}

~abc()
{
if (a)
{
for (int i=0; i delete [] a[i];

delete [] a;
}
}
};

网友(4):

定义double **d;

//动态开辟空间 d[n][m]
int n=5,m=4;
d=new double*[n];
for(int i=0;i{
d[i]=new double[m];
}

网友(5):

double **a = new double[x][y]