Хочу сразу отметить, что я уже искал сайт и не нашел подобной проблемы.Были вопросы о том, что кто-то не может поместить объект в узел, но моя проблема заключается в следующем:
Я не могу поместить объект внутри узла И мне не разрешено создавать конструктор по умолчанию для объекта (по крайней мере, не в определении класса)
Более конкретно:
Мне дали следующий класс Employer:
class Employer
{
public:
Employer(string x, int a, int b, int c);
string getname() const { return name; }
private:
string name;
int age, sal, hire;
};
Employer::Employer(string x, int a, int b, int c) : name(x), age(a), sal(b), hire(c) { }
Как вы можете видеть, по умолчанию нет конструктора дляэтот класс, и мне не разрешено создавать его (это правила ..!)
И я создал следующий класс Node:
class Node
{
public:
Employer emp;
Node* link;
Node(Employer);
};
Node::Node(Employer x)
{
emp= x;
link=NULL;
}
, как вы можете видеть, я хочусоздайте класс Node, который содержит указатель узла и объект Employer внутри него.
К сожалению, это не работает.Я продолжаю получать следующее сообщение об ошибке:
E2279: Не удается найти конструктор по умолчанию для инициализации члена .....
В основном это происходит потому, что у класса Employer нет конструктора по умолчанию, "Employer emp;"в классе Node не «распознается» компилятором, как если бы он был «int n» вместо «emper emp».
Поэтому мой вопрос таков:
Как я могу поместить объект Employer в узел без изменения / добавления чего-либо в класс Employer (т. Е. Я не могу добавить конструктор по умолчанию к классу Employer, и при этом я не могу добавить что-то вроде «Friend Class Node», правиладолжен оставить класс Employer как есть)
Поскольку я новичок в программировании, я хотел бы добавить, что меня еще не учили шаблонам, поэтому мне не разрешено использовать что-либо из этого, толькоинструменты, которые я вам уже дал (классы, функции, указатели и т. д.)