我已经在链接类实现中重载了'< <'运算符,并且我在主函数中声明了.cpp文件,但它不起作用,并且此错误发生: 未定义参考操作< &列表)我已经完成<<运算符超载但它不工作
这是ostream的功能的linkedlist.h文件中声明:
friend std::ostream& operator<< (std::ostream& os, LinkedList<T>& list);
,这是ostre实施AM功能:
template <typename T>
std::ostream& operator<< (std::ostream& os, LinkedList<T> list)
{
list.current = list.start;
while(list.current != NULL)
{
os<< list.current->info<<" -> ";
list.current = list.current->next;
}
os<<"NULL"<<endl;
return os;
}
在主函数中,我创建了从SavingAccount类
LinkedList <SavingAccount> list;
有对象,并在主函数中此行发生错误的列表:
cout << list <<endl;
好..这是LinkedList类的实现:
#include "LinkedList.h"
#include "SavingAccount.h"
#include <cstddef>
using namespace std;
template <typename T>
LinkedList<T>::LinkedList()
{
start = NULL;
current = NULL;
}
template <typename T>
LinkedList<T>::~LinkedList()
{
// Add code.
}
template <typename T>
std::ostream& operator<< (std::ostream& os,const LinkedList<T>& list) {
list.current = list.start;
while(list.current != NULL)
{
os<< list.current->info<<" -> ";
list.current = list.current->next;
}
os<<"NULL"<<endl;
return os;
}
,这是LinkedLins类的头文件:
#ifndef LINKEDLIST_H
#define LINKEDLIST_H
#include<iostream>
using namespace std;
template <typename T>
struct Node{
T info;
Node<T> *next;
};
template <typename T>
class LinkedList
{
Node<T> *start;
Node<T> *current;
public:
LinkedList();
~LinkedList();
friend std::ostream& operator<< (std::ostream& os, const LinkedList<T>& list);
};
#endif // LINKEDLIST_H
我希望你们能帮助我,在你的帮助是非常赞赏
你是否在头文件中实现了它? – juanchopanza
比较你的声明和你的定义(第二个参数)。 – lapk
为什么要将'current'节点放在实际的列表类中? –