C++11 错误C2679二进制'<<';:未找到接受类型为';的右操作数的运算符;T';(或没有可接受的转换)
我的模板类中的friend函数有问题。出于某种原因,它不喜欢我试图在运算符重载friend函数中使用类型为t的变量C++11 错误C2679二进制'<<';:未找到接受类型为';的右操作数的运算符;T';(或没有可接受的转换),c++11,templates,operator-overloading,friend,C++11,Templates,Operator Overloading,Friend,我的模板类中的friend函数有问题。出于某种原因,它不喜欢我试图在运算符重载friend函数中使用类型为t的变量 #include <iostream> #include <fstream> #include <string> template <typename T> class LL { struct Node { T mData; Node *mNext; Node();
#include <iostream>
#include <fstream>
#include <string>
template <typename T>
class LL
{
struct Node
{
T mData;
Node *mNext;
Node();
Node(T data);
};
private:
Node *mHead, *mTail;
int mCount;
public:
LL();
~LL();
bool insert(T data);
bool isExist(T data);
bool remove(T data);
void showLinkedList();
void clear();
int getCount() const;
bool isEmpty();
friend std::ofstream& operator<<(std::ofstream& output, const LL& obj)
{
Node* tmp;
if (obj.mHead != NULL)
{
tmp = obj.mHead;
while (tmp != NULL)
{
output << tmp->mData << std::endl; // "tmp->mData is causing the error
tmp = tmp->mNext;
}
}
return output;
}
};
#包括
#包括
#包括
模板
LL班
{
结构体类型
{
T-mData;
节点*mNext;
Node();
节点(T数据);
};
私人:
节点*mHead,*mTail;
国际计数;
公众:
LL();
~LL();
布尔插入(T数据);
bool-isExist(T数据);
bool-remove(T数据);
void showLinkedList();
无效清除();
int getCount()常量;
bool是空的();
friend std::ofstream&operator您测试的LL
的哪个专业化?元素类型实际上有流操作符吗?它是我创建的一个名为Item的类。它有操作符吗,我重新检查后发现没有。我想我已经添加了它。如果我真的将该重载添加到Item类中,它会工作吗?编辑:会es起作用了。好了;)你测试的LL
的哪个专业化?元素类型真的有流式操作符吗?这是我创建的一个名为Item的类。它有操作符吗我重新检查,结果发现没有。我想我添加了它。如果我将重载添加到Item类中,它会起作用吗?编辑:它会起作用.给你;)