Ошибка C2679 двоичного «<<»: не найден оператор, который принимает правый операнд типа «T» (или нет приемлемого преобразования) - PullRequest
1 голос
/ 12 апреля 2019

У меня проблемы с функцией моего друга в классе шаблона. По какой-то причине ему не нравится тот факт, что я пытаюсь использовать переменную типа 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;
    }

};

Это класс связанного списка, и мне нужна перегрузка оператора функции-друга, чтобы в основном позволить мне выводить любой конкретный список объектов в текстовый файл. Я надеюсь, что кто-то может мне помочь.

...