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

我想在类abc中定义一个二维数组double a[X][Y],其中x,y的值我想在随后再赋值。但是被提示错误:abc::X error:表达式必须含有常量。请问如何用动态数组在类abc中实现我想要的目的呀?

只写出与动态分配空间相关的,其它的类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<y;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的办法来做。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-18
必须规定X,Y的值,不能用变量。要动态实现,必须用new double[x]或malloc
第2个回答  2013-01-18
在定义数组的时候要么初始化,要么指定大小。不允许定义未初始化且不确定大小的数组。

你可以这样定义这个类
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<y; i++)
a[i] = new double[n];
}
else
a = NULL;
}

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

delete [] a;
}
}
};
第3个回答  2013-01-18
定义double **d;

//动态开辟空间 d[n][m]
int n=5,m=4;
d=new double*[n];
for(int i=0;i<n;i++)
{
d[i]=new double[m];
}
第4个回答  2013-01-18
double **a = new double[x][y]

C++怎么在结构体里定义动态数组
可以在结构体中添加指针类成员变量,并在成员函数中实现动态数组的分配。以下以一个仅实现整型动态数组,不包含其它功能的类为例做说明。class array \/\/类名{ public: int *v; \/\/动态数组首地址。 int length; \/\/动态数组长度。 array(int len) { if(len <= 0)\/\/初始化长...

c++中怎样定义动态数组?
1、new 动态定义数组 2、因为new 就是用来动态开辟空间的,所以当然可以用来开辟一个数组空间。这样,下面的语句:int size=50; int *p=new int[size]; \/\/是正确的3、但是二维动态数组能不能也这样定义呢 int size=50,Column=50; int (*p)[Column]=new int [size][Column](1)首先 ne...

C++ 中string类如何创建动态数组?求助!!!
C++本身并不支持动态数组,但是可以通过动态申请内存实现动态数组的功能。实现代码的例子如下:int count;cout<<"请输入数组大小";cin>>count;string ptr=new string[count];\/\/下面就可以使用类似动态数组的数据 delete []ptr;\/\/ 不用的时候务必自己释放该内存 ...

C++ 中string类如何创建动态数组?求助!!!
string其实就是对动态数组的封装,因此你不必在动态new,当然要这么做也可以,但是写法是string* pstr = new string;即可。不过你的问题不是出在这里,我改写了下,在vs2012下测试通过。include <iostream> include<string> using namespace std;int main( int nArgc, char** szArgv ){ string *pst...

...char*类型字符串 如何定义动态数组并传给c#谢谢
1、首先在C++中:在 C++ 中定义动态数组:include <vector> extern "C" __declspec(dllexport) const char** GetStringArray(int& size){ std::vector<const char*> stringArray;stringArray.push_back("Hello");stringArray.push_back("World");stringArray.push_back("!");size = string...

c++如何用类使用自定义的array数组呢?
动态分配的数组可以自定义数组的长度,示例如下:include <stdio.h> include <string.h> include <stdlib.h> int main(){ printf("输入要分配的内存大小:");int size;scanf("%d", &size);  \/\/输入自定义的数组长度 int *pstart =...

c++动态定义数组长度
你可以先定义一个全局指针变量(如果要求整型数组的话就是int* a,字符型就是char* a等),指针你可以把它理解成数组int a[],这里数组a就相当于int*a,但这时指针还没有分配内存空间,只要分配了就相当于数组,但比数组的优势在于可以动态定义长度,如果分配了空间之后a中存储的值就是分配的空间的...

c++编写动态数组类 TArray,构造函数里指针数组初始化问题
main.cpp#include "1.h"int main(){TArray a(10); \/\/ a是一个double 类型的长度为10动态数组TArray b; \/\/ b是一个double 类型的尚未确定其长度的动态数组b.SetLen(7); \/\/ 使b成为一个长度为7的动态数组double d[10] = { 1,2,3,4,5,6,7,8,9,10 };a.Input(d,10); \/\/ ...

在c++的结构体里可以创建动态数组吗?
可以的, 自己 里面可以进行相应的赋值 , 可以char[i], 对应的赋值,或者其他的都是可以,

C++new创建动态数组的问题
这里的一个实体是指的就是单一的类型,比如:int char struct class 这里主要是和一组相区别,不是new出上边那些类型的数组。其实很简单:int *pi = new int;delete pi;char *pchar = new char;delete pchar;int *piArray = new int[10];delete[] piArray;char* pCharArray = new char[10...

相似回答