我已宣布我的运营商<<在LinkedList类中:
friend ostream& operator<< (ostream& s, LinkedList<Type>& list);
并定义它:
template <class Type>
ostream& operator<< (ostream& s, LinkedList<Type>& list) {
s << "[";
LinkedList<Type>* t = list;
while (*t._next != NULL) {
s << *t._info;
*t = *t._next;
if (*t._next != NULL) {
s << ", ";
};
};
s << "]";
return s;
}
每当我试着打电话时:
LinkedList<int>* list = new LinkedList<int>();
list.add(<some int>);
cout << *list << endl;
当我尝试编译时,它会抛出LNK2019错误。
如果我在没有星号的情况下尝试它,它只输出列表指向的地址。我查看了有关运营商的其他问题&lt;&lt;最常见的答案是该函数实际上并未在任何地方定义。
答案 0 :(得分:0)
从引用转换为指针时,您必须使用运算符(&
)的地址。此外,在处理指针时,最好使用->
运算符,因为.
运算符优先于*
运算符。这段代码应该有效:
template <class Type>
ostream& operator<< (ostream& s, LinkedList<Type>& list) {
s << "[";
LinkedList<Type> * t = &list;
while (t->_next != NULL) {
s << t->_info;
t = t->_next;
if (t->_next != NULL) {
s << ", ";
};
};
s << "]";
return s;
}