Оператор Ostream не принимает мой указатель стека

0

Код для перегруженного операционного оператора

template<class T>
ostream& operator<< (ostream& streamer,Stack<T>& stack)
{
    if(stack.isEmpty())
    {
            streamer << "[]";
    }
    else
    {
            Stack<T> tStack = stack;

            streamer << "[";

            while(tStack.top!=NULL)
            {
                    streamer << tStack.top->element;

                    tStack.top = tStack.top -> next;

                    if(tStack.top)
                            streamer << ",";


            }

            streamer << "]";

    }
    return streamer;

}

Ошибка довольно длинная, вот ссылка.... http://pastebin.com/qt4WTEiV

Я также проверил функцию, подобную этой...

Stack<int> *s1 = new Stack<int>();
cout << "Pushing...." << endl;
s1->push(1);
s1->push(2);
s1->push(3);
s1->push(4);
s1->push(5);

cout<< *s1 << endl;

функция друга...

friend ostream& operator<< <T>(ostream&,Stack<T>&);

SOLVED: никогда не было ~ Stack() где-то в моем коде

  • 0
    это очень strengleyyyyyy
  • 0
    Покажите нам немного больше об ошибке, пожалуйста.
Показать ещё 16 комментариев
Теги:
oop
operator-keyword
overloading

1 ответ

3

ошибка, отправленная вами

Stack.C: 37: 10: ошибка: нет соответствия для 'operator * (тип операнда -' std :: ostream {aka std :: basic_ostream}) return * streamer;

говорит, что вы ostream, что неверно. Измените это, чтобы вернуть ссылку на ostream:

return streamer;

и также убедитесь, что другие операции вывода, используемые в ostream& operator<< (ostream& streamer,Stack<T>& stack) как

streamer << tStack.top->element;
tStack.top = tStack.top -> next;

четко определены. Наконец, декларация

friend ostream& operator<< <T>(ostream&,Stack<T>&);

следует изменить на:

template<class T>
friend ostream& operator<< (ostream&,Stack<T>&);
  • 0
    Я все еще получаю ошибку после попытки этих
  • 0
    Пожалуйста, покажите полный код с заявлением друга и ошибками. Всегда показывать актуальный код и возникающие ошибки
Показать ещё 12 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню