没有匹配我试图建立一个模板的优先级列表(模板参数是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