我试图编写一个友元函数来浏览链表并输出列表中的字符,但由于某种原因,我无法在友元函数中声明节点。这是我的代码:
这是功能:
std::ostream& operator<<(std::ostream& out, LinkedList& list)
{
Node *tempNode = nullptr;
*tempNode = *beginningOfList;
std::cout << "list: ";
while(tempNode)
{
std::cout << tempNode->letter;
if (tempNode->next)
std::cout << ", ";
tempNode = tempNode->next;
}
return out;
}
这是头文件:
#ifndef _LINKED_LIST_
#define _LINKED_LIST_
#include <ostream>
class LinkedList
{
public:
LinkedList();
~LinkedList();
void add(char ch);
bool find(char ch);
bool del(char ch);
friend std::ostream& operator<<(std::ostream& out, LinkedList& list);
private:
struct Node
{
char letter;
Node *next;
};
Node *beginningOfList;
};
#endif // _LINKED_LIST_
当我尝试编译它时,我收到消息&#34;节点未在此范围内声明,&#34;以及&#34; * tempNode未在此范围内声明&#34; &#34; * beginOfList未在此范围内声明。&#34;我猜这个问题与名称空间有关,但我真的不确定。
答案 0 :(得分:1)
说实话。节点等未在该范围内声明。您的运算符是一个全局函数,但这些东西都在LinkedList的范围内。尝试将它们称为LinkedList :: Node,list-&gt; beginningOfList等。