C++ 用类处理二维数组时的一个小问题
以上是我的班级宣言C++ 用类处理二维数组时的一个小问题,c++,class,multidimensional-array,C++,Class,Multidimensional Array,以上是我的班级宣言 class linklist4x4 { private: struct node4x4 { double data[4][4]; node4x4 *link; }*p; public: linklist4x4(); void append( double* num ); void add_as_first( double* num ); void addafter( int c, doub
class linklist4x4
{
private:
struct node4x4
{
double data[4][4];
node4x4 *link;
}*p;
public:
linklist4x4();
void append( double* num );
void add_as_first( double* num );
void addafter( int c, double* num );
//void del( double* num );
void display();
int count();
double* getdata(int c);
~linklist4x4();
};
下面是一个函数声明
class linklist4x4
{
private:
struct node4x4
{
double data[4][4];
node4x4 *link;
}*p;
public:
linklist4x4();
void append( double* num );
void add_as_first( double* num );
void addafter( int c, double* num );
//void del( double* num );
void display();
int count();
double* getdata(int c);
~linklist4x4();
};
void linklist4x4::append(双*num)
{
节点4x4*q,*t;
if(p==NULL)
{
p=新节点4x4;
for(int i=0;ilink=NULL;
}
其他的
{
q=p;
而(q->link!=NULL)
q=q->link;
t=新节点4x4;
for(int i=0;ilink=NULL;
q->link=t;
}
}
当我尝试编译时,它在标记的注释行中给出了一个错误,如图所示:“errorC2109:subscript需要数组或指针类型”
有人能帮忙吗?传入的
num
是一个单double
指针,但您正试图用两个下标对其进行索引。如果您真的传入4x4double
数组,请更改函数签名以表明它是这样的。您正在索引num
,就好像它是一个2D数组或doub一样le指针,而它只有一层深
double*num
num[i][j]
您已经定义了方法append以获取double类型的一维数组。但是在函数中,您将其用作二维数组
每个链接列表节点中的数据都是一个二维双精度数组
因此,所有成员函数都应该接受一个二维数组double作为参数
更改:
void linklist4x4::append(double* num)
{
node4x4 *q,*t;
if( p == NULL )
{
p = new node4x4;
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
p->data[i][j]=num[i][j];//error line
p->link = NULL;
}
else
{
q = p;
while( q->link != NULL )
q = q->link;
t = new node4x4;
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
t->data[i][j]=num[i][j];//error line
t->link = NULL;
q->link = t;
}
}
到
“num”只有一个间接寻址,因此您不能将其取消引用两次
void append( double num[][4] );
void add_as_first( double num[][4] );
void addafter( int c, double num[][4] );
如果您希望它接受2D矩阵,以便可以对其应用[]两次。您也可以使用num[i*4+j]访问所需的数据。我会选择
双num[]4]
因为这在本文中更清楚,但这是提到间接层次的道具。人们应该真正阅读C++常见问题解答。这是其中一个经常出现的问题,并且在那里得到了很好的解释-如何实现(特别是阅读13.10中关于如何创建矩阵类的内容)
double (*num)[4]