【发布时间】:2014-06-12 10:07:28
【问题描述】:
我正在尝试为具有优先级的列表构建一个模板(模板参数是 T 表示数据,Priority 表示优先级(例如,如果我有一行有成绩的学生,则 T 将是学生他们的优先级将是他们的成绩)。 该列表包含一个 Node 类,每个 Node 包含数据、优先级和指向下一个 Node 的指针。
我尝试为 Node 和列表重载 << 用于列表(打印每个节点)。
例如:如果我想打印名为receptionHour 的列表,使用这一行:
cout << endl << "containing: " << receptionHour << endl;
问题是编译器不识别我实现的运算符,因此它不使用它们并且该行不会编译。我为每一行得到的错误是:
'operator
这是我对<< 运算符、列表(称为 PriorityQueue)和 Node.js 的实现。
Node(inode 节点类女巫在列表类中:
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类吗? -
为什么你的
operator<<是模板化的?
标签: c++ operator-keyword