クラスSortedListのテンプレートを作成しようとしています。<< 演算子をオーバーロードしたいので、クラス内でフレンド関数を宣言しますが、main.cpp をコンパイルしようとするたびに次のエラーが発生します: template-id 'operator<< ... ' does not match anyテンプレート宣言。ここに main.cpp のコードがあります
int main()
{
SortedList<int, int> lst, lst2;
int a = 2;
lst.addItem(2, 3);
cout << lst << endl;
return 0;
}
これはテンプレートクラスの宣言と定義です
template <typename K, typename V>
struct Node
{
K key;
V value;
Node<K, V>* next;
};
template <typename K, typename V>
class SortedList
{
friend ostream& operator << <K, V>(ostream&, const SortedList&);
public:
SortedList();
SortedList(const SortedList&);
SortedList& operator = (const SortedList&);
~SortedList();
void addItem(const K&, const V&);
void removeElem(const K&);
void removeAt(int);
bool remove(const K&);
private:
Node<K, V>* start;
size_t n;
};