沒有匹配我試圖建立一個模板的優先級列表(模板參數是T的數據和優先級優先級(例如,如果我有一系列具有成績的學生,T將是學生,他們的優先級將是他們的成績) 該列表包含一個Node類,每個節點包含數據,優先級和指向接下來節點'operator <<'(包括字符串和ostream和重載<<)在c + +
我試圖重載< <運營商節點和列表,以便我可以使用<<
的列表(打印每個節點) 例如:如果我想打印一個名爲receptionHour列表,使用這條線: cout << endl << "containing: " << receptionHour << endl;
問題是,編譯器不能識別我實現的操作符,所以它不使用它們,行不會編譯。我得到每行的錯誤是:
敵不過 '操作< <'(操作數類型是 '的std :: basic_ostream' 和 'MTM :: PriorityQueue中::節點')
這裏是我對<<
運算符的實現,用於列表(稱爲PriorityQueue)和節點。 節點(insode節點類女巫是列表類中:
template<class P, class TT>
friend ostream& operator<<(ostream& os, Node node){
os << "[";
os << node.priority;
os << ",";
os << node.data;
os << "]";
return os;
}
列表(稱爲PriorityQueue中):
template<class P, class TT>
friend ostream& operator<<(PriorityQueue<Priority, T>& queue, std::ostream& os){
Node* nodePtr = queue.head;
Node node;
for(int i = 1; i < queue.sizePQ; i++) {
node = *nodePtr;
os << node;
nodePtr = node.next;
}
return os;
}
感謝
您是否定義了'Priority'類? – Math
爲什麼你的'operator <<'模板? – Neil