リンクされたクラスの実装で '<<' 演算子をオーバーロードし、メイン関数で .cpp ファイルを宣言しましたが、機能せず、次のエラーが発生します: 演算子への未定義の参照 <& リスト)
これは、linkedlist.h ファイルでの ostream 関数の宣言です。
friend std::ostream& operator<< (std::ostream& os, LinkedList<T>& list);
そして、これは ostream 関数の実装です:
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;
エラーは、次の行の main 関数で発生します。
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
皆さんが私を助けてくれることを願っています、あなたの助けは大歓迎です