错误C2679二进制'<<':未找到采用'T'类型的右侧操作数的运算符(或没有可接受的转换)

时间:2019-04-12 13:07:52

标签: c++11 templates operator-overloading friend

我的模板类中的朋友函数遇到问题。由于某种原因,它不喜欢我试图在运算符重载好友函数中使用类型为T的变量的事实。

#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;
    }

};

这是一个链接列表类,我需要Friend函数运算符重载来基本上允许我将任何特定的对象列表输出到文本文件中。我希望有人能帮助我。

0 个答案:

没有答案