C ++ (консоль) Конструкторы и производные классы - PullRequest
0 голосов
/ 19 сентября 2018

Давайте предположим, что я создаю структуру, которая имеет две переменные.

struct mystruct{
public:
string name;
int age;};

class School :public mystruct{
private:
mystruct student;
bool status;
int major;}

В mystruct, если я создал перегруженный конструктор, чтобы присвоить значения двум переменным, но я хочу создать obj только через класс.Как мог этот конструктор войти в игру?Могу ли я поместить его в класс для доступа к переменным mystruct?

Примечание: я знаю, что здесь не было конструкторов, но я задаюсь вопросом по этому вопросу, прежде чем продолжить.

Пример.Если я создаю объект School, могу ли я иметь конструктор, автоматически устанавливающий mystruct.name & mystruct.age ??Я не хочу создавать объект mystruct вне класса School.

1 Ответ

0 голосов
/ 19 сентября 2018

У вас проблема в том, что mystruct является одновременно базовым классом и членом School.Не ошибка, но немного странно.Поскольку ваш вопрос касается производных классов, я проигнорирую переменную-член.

Вы вызываете конструктор для mystruct из конструктора для School.Например,

struct mystruct{
public:
    mystruct(string n, int a) : name(n), age(a) {}
    string name;
    int age;
};

class School : public mystruct {
public:
    School(string name, int age, bool s, int m) : 
        mystruct(name, age), // call to the base class constructor
        status(s), major(m) {}
private:
    bool status;
    int major;
}

Дизайн вашего класса очень странный.Школа - это (предположительно) группа учеников, но ваш дизайн, кажется, учитывает только одного ученика.Это нужно исправить, прежде чем идти дальше.

Есть техническая проблема (как вызвать конструктор базового класса), на которую я ответил здесь.Но не позволяйте этому думать, что вы решили проблему class design , которая на самом деле намного сложнее.Ваша программа никогда не будет правильной, пока у вас не будет разумного замысла.

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