嗨,我正在努力解决这个错误,当我尝试将链接列表传递给我拥有的另一个类时,我得到了这个错误。我已经查看过其他问题,但是他们似乎没有解决这个问题。
我还需要SLLNode保留在ListAsSLL中,因为它是其他类的父级
DynamicSizeMatrix应该具有ListAsSLL
的聚合我的DynamicSizeMatrix.cpp文件
#include "DynamicSizeMatrix.h"
#include<iostream>
#include<string>
#include<cassert>
#include<cstdlib>
#include"ListAsSLL.h"
using namespace std;
DynamicSizeMatrix::DynamicSizeMatrix(SLLNode* sll,int r, int *c)
{
rws = r;
col = new int [rws];
for(int x=0; x < rws; x++) // sets the different row sizes
{
col[x] = c[x];
}
SLLNode *node = sll ;
// node = sll.head;
*info = new SLLNode*[rws];
for (int x= 0; x< rws;x++)
{
info[x] = new SLLNode*[col[x]];
}
for(int x=0;x<rws;x++)
{
for(int y=0;y<col[x];y++)
{
info[x][y] = node;
node = node->next; // My error happens here
}
}
}
我的“DynamicSizeMatrix.h”
#include"ListAsSLL.h"
#include "ListAsDLL.h"
#include"Matrix.h"
#include"Object.h"
class SLLNode;
class DynamicSizeMatrix : public Matrix
{
private:
SLLNode*** info;
//Object* colmns;
int rws;
int *col; //array of column sizes
// int size;
public:
DynamicSizeMatrix()
{
info = 0;
rws = 0;
col = 0;
}
DynamicSizeMatrix(SLLNode* sll,int r, int *c);
//......
和“ListAsSLL.h”
class ListAsSLL : public List
{
//friend class LLIterator;
friend class DynamicSizeMatrix;
protected:
struct SLLNode
{
Object* info;
SLLNode* next;
// SLLNode(Object *e, ListAsSLL::SLLNode* ptr = 0);
};
SLLNode* head;
SLLNode* tail;
SLLNode* cpos; //current postion;
int count;
public:
ListAsSLL();
~ListAsSLL();
//////////////
提前致谢
答案 0 :(得分:0)
在您的类ListAsSLL中,从使用它的外部类的角度来看,它只能访问公共成员。如您所见,您的SLLNode位于list_of_towns
部分。
所以你真的有两个选择(好吧,实际上还有很多选项),但是这里有两个选项将它封装在同一个文件中至少:
protected
部分,然后使用它:public
而不只是ListAsSLL::SLLNode
。我更喜欢方法1,因为它使范围更小/更相关,但实际上没有多少......例如:
SLLNode