LNK2019 错误,试图覆盖 LinkedList class 的运算符 <<
LNK2019 error, trying to override operator<< for LinkedList class
我已经在 LinkedList 中声明了我的运算符<< class:
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 错误。
如果我在没有星号的情况下尝试它,它只会输出列表指向的地址。我查看了有关 operator<< 的其他问题,最常见的答案是该函数实际上并未在任何地方定义。
从引用转换为指针时,您必须输入运算符的地址 (&
)。此外,在处理指针时,最好使用 ->
运算符,因为 .
运算符优先于 *
运算符。此代码应该有效:
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 中声明了我的运算符<< class:
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 错误。
如果我在没有星号的情况下尝试它,它只会输出列表指向的地址。我查看了有关 operator<< 的其他问题,最常见的答案是该函数实际上并未在任何地方定义。
从引用转换为指针时,您必须输入运算符的地址 (&
)。此外,在处理指针时,最好使用 ->
运算符,因为 .
运算符优先于 *
运算符。此代码应该有效:
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;
}