ISO C ++ запрещает объявление «стека» без типа - PullRequest
1 голос
/ 26 ноября 2011

У меня есть файл заголовка для структуры стека. что я не понимаю, так это ошибка, которая застревает у меня:

ISO C ++ запрещает объявление 'Stack' без типа

Вот код:

#include <stdexcept>

class Element;
class Stack{
    public:
        Stack():first(0){}; //constructor
        ~Stack(); //destructor
        void push(int d);
        int pop()throw(length_error);
        bool empty();

    private:
        Element *first;
        Stack(const& Stack){}; //copy constructor
        Stack& operator = (const& Stack){}; //assignment operator..
};

Кто-нибудь знает, что означает ошибка?

1 Ответ

9 голосов
/ 26 ноября 2011

Stack& operator = (const& Stack) должно быть Stack& operator = (const Stack&).

Вы не можете иметь указатель на ссылку, массив ссылок или что-либо еще, поэтому компилятор считает, что & должен завершить часть типа объявления, а следующий Stack должен быть именем параметра. Однако в const& нет типа, поэтому компилятор говорит, что вы не можете объявить параметр Stack без типа. В старых версиях C тип int иногда выводился в тех случаях, когда тип мог появиться, но был опущен, поэтому ошибка говорит о том, что ISO C ++ запрещает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...