我有一個名爲「KeyedCollection」的模板類,其中包含將數據插入向量以及流出數據的函數。該矢量是一個私人成員函數。我似乎無法弄清楚如何在我的重載ostream朋友函數中使用這個向量中的信息。注意:我不能改變類和函數參數的一般結構,它們必須保持原樣。我列出了所有的課程供參考,但有問題的功能是最後一個。在ostream中使用向量重載朋友函數
#include "stdafx.h"
#include <iostream>
#include <vector>
#include "Windows.h"
#include <string>
using namespace std;
template <class K, class T>
class KeyedCollection {
public:
// Create an empty collection
KeyedCollection();
// Return the number of objects in the collection
int size() const;
// Insert object of type T with a key of type K into the
// collection using an 「ignore duplicates」 policy
void insert(const K&, const T&);
// Output data value of objects in the collection,
// one data value per line
friend ostream& operator<<(ostream&,
const KeyedCollection&);
private:
// Insert required members here
int objSize;
vector<T> objects;
};
template<class K, class T>
KeyedCollection<K,T>::KeyedCollection() {
objSize = 0;
vector<T> objects;
}
template<class K, class T>
int KeyedCollection<K,T>::size() const {
objSize = objects.size();
return objSize;
}
template<class K, class T>
void KeyedCollection<K,T>::insert(const K&,const T& c) {
objects.push_back(c);
}
// !!! function i am trying to define !!!
template<class K, class T>
ostream& operator<<(ostream& outstream,const KeyedCollection<K,T>& inst) {
outstream<<inst<<endl;
return outstream;
}
而且,我收到說
「致命錯誤LNK1120:1周無法解析的外部」 錯誤
和一個寫着
「錯誤LNK2019:無法解析的外部符號」 class std :: basic_ostream> & __cdecl operator < <(class std :: basic_ostream> &,class KeyedCollection const &)「(?? 6 @ YAAAV?$ basic_ost令@杜?$ @ char_traits @ d性病性病@@@ @@ AAV01 @ ABV?$ @ KeyedCollection HVCustomer @@@@@ Z)函數_main」引用...
正如一個側面的問題,任何想法這些可能是什麼?
朋友''<<進級的車身,並沒有錯誤消失或移動實施了不同的一個被取代? – Yakk
好吧我試過,但我不認爲我做得正確...你會定義功能 的ostream&KeyedCollection ::運算符<<(ostream的&outstream,常量KeyedCollection &研究所){ \t outstream <<出師表<< ENDL; 返回外流; } –
jordpw
在課堂上。在'friend'聲明結尾處的';'放置一個'{'然後寫入主體,然後放入一個'}'。換行符可選。 – Yakk