C++;链表实施 我正在做一个作业,要求我在C++中实现链表。到目前为止,除了我正在创建一个新的列表外,一切都很顺利。在我的方法中创建列表()。当我将内容和ID号分配给我的字段< /代码>并尝试调用 GETNEXT()/CUT>时,我得到一个错误:在“节点”中,请求成员'GETNEXTUMER(),这是一个非类类型的“*field”。我对C++语法和面向对象编程仍然是新的。我做错了什么?我认为使用行Field*Node=newfield(大小,空)我的变量节点将属于类类型字段 #include <iostream> #include <ctype.h> using namespace std; typedef enum { EMPTY, OCCUPIED } FIELDTYPE; // Gameboard Size int SIZE; class Field { private: int _SquareNum; FIELDTYPE _Content; Field* _Next; public: // Constructor Field() { } // Overload Constructor Field(int SquareNum, FIELDTYPE Entry) { _SquareNum = SquareNum; _Content = Entry; } // Get the next node in the linked list Field* GetNext() { return _Next; } // Set the next node in the linked list void SetNext(Field *Next) { _Next = Next; } // Get the content within the linked list FIELDTYPE GetContent() { return _Content; } // Set the content in the linked list void SetContent(FIELDTYPE Content) { _Content = Content; } // Get square / location int GetLocation() { return _SquareNum; } // Print the content void Print() { switch (_Content) { case OCCUPIED: cout << "Field " << _SquareNum << ":\tOccupied\n"; break; default: cout << "Field " << _SquareNum << ":\tEmpty\n"; break; } } }*Gameboard; #包括 #包括 使用名称空间std; typedef枚举{空,已占用}字段类型; //游戏板大小 整数大小; 类字段{ 私人: 整数平方; 字段类型\u内容; 字段*\u下一步; 公众: //建造师 字段(){} //重载构造函数 字段(int SquareNum,FIELDTYPE Entry){u SquareNum=SquareNum;_Content=Entry;} //获取链接列表中的下一个节点 字段*GetNext(){return\u Next;} //设置链接列表中的下一个节点 void SetNext(字段*Next){u Next=Next;} //获取链接列表中的内容 FIELDTYPE GetContent(){return\u Content;} //设置链接列表中的内容 void SetContent(FIELDTYPE Content){u Content=Content;} //得到广场/位置 int GetLocation(){return} //打印内容 无效打印(){ 开关(_内容){ 案件: 无法

C++;链表实施 我正在做一个作业,要求我在C++中实现链表。到目前为止,除了我正在创建一个新的列表外,一切都很顺利。在我的方法中创建列表()。当我将内容和ID号分配给我的字段< /代码>并尝试调用 GETNEXT()/CUT>时,我得到一个错误:在“节点”中,请求成员'GETNEXTUMER(),这是一个非类类型的“*field”。我对C++语法和面向对象编程仍然是新的。我做错了什么?我认为使用行Field*Node=newfield(大小,空)我的变量节点将属于类类型字段 #include <iostream> #include <ctype.h> using namespace std; typedef enum { EMPTY, OCCUPIED } FIELDTYPE; // Gameboard Size int SIZE; class Field { private: int _SquareNum; FIELDTYPE _Content; Field* _Next; public: // Constructor Field() { } // Overload Constructor Field(int SquareNum, FIELDTYPE Entry) { _SquareNum = SquareNum; _Content = Entry; } // Get the next node in the linked list Field* GetNext() { return _Next; } // Set the next node in the linked list void SetNext(Field *Next) { _Next = Next; } // Get the content within the linked list FIELDTYPE GetContent() { return _Content; } // Set the content in the linked list void SetContent(FIELDTYPE Content) { _Content = Content; } // Get square / location int GetLocation() { return _SquareNum; } // Print the content void Print() { switch (_Content) { case OCCUPIED: cout << "Field " << _SquareNum << ":\tOccupied\n"; break; default: cout << "Field " << _SquareNum << ":\tEmpty\n"; break; } } }*Gameboard; #包括 #包括 使用名称空间std; typedef枚举{空,已占用}字段类型; //游戏板大小 整数大小; 类字段{ 私人: 整数平方; 字段类型\u内容; 字段*\u下一步; 公众: //建造师 字段(){} //重载构造函数 字段(int SquareNum,FIELDTYPE Entry){u SquareNum=SquareNum;_Content=Entry;} //获取链接列表中的下一个节点 字段*GetNext(){return\u Next;} //设置链接列表中的下一个节点 void SetNext(字段*Next){u Next=Next;} //获取链接列表中的内容 FIELDTYPE GetContent(){return\u Content;} //设置链接列表中的内容 void SetContent(FIELDTYPE Content){u Content=Content;} //得到广场/位置 int GetLocation(){return} //打印内容 无效打印(){ 开关(_内容){ 案件: 无法,c++,oop,linked-list,C++,Oop,Linked List,您正在调用节点.GetNext(),但是节点是一个指针。您需要使用->操作符而不是操作符,就像在节点->GetNext()中调用节点.GetNext()一样,但节点是指针。您需要使用->运算符而不是运算符,如节点->获取下一步()用于寻址对象中的成员和对对象的引用。节点是指向对象的指针。因此,您需要将其转换为引用,然后才能将其与一起使用。这意味着执行(*节点)。GetNext()。或者您可以使用缩写:节点->GetNext()-这两者完全相同 一个很好的助记符是将pointy操作符与指针一起使用

您正在调用
节点.GetNext()
,但是
节点
是一个指针。您需要使用
->
操作符而不是
操作符,就像在
节点->GetNext()
中调用
节点.GetNext()一样
,但
节点
是指针。您需要使用
->
运算符而不是
运算符,如
节点->获取下一步()

用于寻址对象中的成员和对对象的引用。
节点
是指向对象的指针。因此,您需要将其转换为引用,然后才能将其与
一起使用。这意味着执行
(*节点)。GetNext()
。或者您可以使用缩写:
节点->GetNext()
-这两者完全相同


一个很好的助记符是将pointy操作符与指针一起使用:)

用于寻址对象中的成员和对对象的引用。
节点是指向对象的指针。因此,在将其与
一起使用之前,需要将其转换为引用。这意味着执行
(*节点)。GetNext()
。或者您可以使用缩写:
节点->获取下一步()
-这两者完全相同

一个好的助记符是在声明中使用带指针的pointy运算符:)

No

Field *Node = new Field(SIZE, EMPTY);
节点的类型为指向字段的指针

如果您有一个指向类的指针,并且希望使用
->
访问该类的成员,则修复非常简单

Node->GetNext() = Gameboard;
我认为您的代码还有其他错误,而且我认为即使有了这个“修复”,它也不会起作用

Node->SetNext(Gameboard);
声明中没有

Field *Node = new Field(SIZE, EMPTY);
节点的类型为指向字段的指针

如果您有一个指向类的指针,并且希望使用
->
访问该类的成员,则修复非常简单

Node->GetNext() = Gameboard;
我认为您的代码还有其他错误,而且我认为即使有了这个“修复”,它也不会起作用

Node->SetNext(Gameboard);

如果要设置为l值,函数必须返回一个引用值。 您的代码需要进行一些更改:

// Get the next node in the linked list
Field& GetNext() { return *_Next; }
然后您可以将该函数用作l值

Node->GetNext() = *Gameboard; 

如果要设置为l值,函数必须返回一个引用值。 您的代码需要进行一些更改:

// Get the next node in the linked list
Field& GetNext() { return *_Next; }
然后您可以将该函数用作l值

Node->GetNext() = *Gameboard; 

尝试此操作,但现在我收到此错误:“需要左值作为赋值的左操作数”尝试此操作,但现在我收到此错误:“需要左值作为赋值的左操作数”