У меня есть класс 'Token' и класс 'Token_Stream', как показано в коде ниже.Когда я пытаюсь создать объект класса Token_Stream, я получаю ошибку компиляции: (C2280) 'Token_stream :: Token_stream (void)': попытка сослаться на удаленную функцию
Я использую сообщество C ++ Visual Studio15.9.1.Я новичок в "современном" программировании и обучаю себя C ++ из книги Страуструпа PPP C ++ 2-е издание.Я прочитал многие результаты поиска по этому сайту «c ++ пытается сослаться на удаленную функцию c2280», но ни один из них не помог мне решить проблему.
Мое понимание конструкторов неполное, несмотря на чтение нескольких веб-страниц иразделы книги о них, но я понимаю достаточно (я думаю), чтобы думать, что это проблема конструктора.Я определенно борюсь с пользовательским классом, который включает член, который является другим пользовательским классом, плюс функции-члены.
Код приведен ниже.Если бы объявления двух функций-членов Token_stream были бы полезны, дайте мне знать, и я добавлю их.
class Token {
public:
char kind;
double value;
Token(char ch) // make a Token from a char
//- this is a constructor, right?
:kind(ch), value(0) { } // what do the braces here mean?
Token(char ch, double val) // make a Token from a char and a double
:kind(ch), value(val) { }
};
class Token_stream {
public:
Token get();
void putback(Token t);
private:
bool full{ false };
Token buffer;
// Token_stream() = default;
};
Token_stream ts; // ERROR C2280 here
// Token_stream::Token_stream(void)': attempting
// to ref. a deleted function