Ругается, что несколько конструкторов по умолчанию #include "header.h" class Book { public: Book(); Book(const Book &book); Book(const char Name[100] = "-", const char Theme[100] = "-", const char Author[100] = "-", const char Publisher[100] = "-", const int Year = 0, const int Pages = 0, const int Price = 0); ~Book(); void input(); void output(); char mName[100]; char mAuthor[100]; char mPublisher[100]; protected: void enterDate(char*); char mTheme[100]; int mYear; int mPages; private: void printDate(const char*, WORD); int mPrice; }; C #include "header.h" class Book { public: Book(); Book(const Book &book); Book(const char Name[100] = "-", const char Theme[100] = "-", const char Author[100] = "-", const char Publisher[100] = "-", const int Year = 0, const int Pages = 0, const int Price = 0); ~Book(); void input(); void output(); char mName[100]; char mAuthor[100]; char mPublisher[100]; protected: void enterDate(char*); char mTheme[100]; int mYear; int mPages; private: void printDate(const char*, WORD); int mPrice; };
в спп файле у тебя должны быть только имплементации, а само описание класса, которое ты на фигарил тут, должно быть в h файле Можно конечно сделать и как ты сделал, но я не помню какие там подводные, ибо все делают так, как я выше описал
AIexa, в .h файлах никто не запрещает подключать другие .h файлы, у него в header.h должен быть "WORD" , упомянутый в параметрах private метода
первый и третий конструктор выполняются при auto book = new Book() потому что в первом у тебя нет аргументов, а в третьем все аргументы имеют значение по умолчанию. убери первый конструктор