Как создать производные классы без необходимости переписывать код? - PullRequest
4 голосов
/ 05 ноября 2011

Допустим, у меня есть:

class A {
    A(int i);
};

class B : A {
};

Например, я не могу создать экземпляр B (3), так как этот конструктор не определен. Есть ли способ создать объект B, который бы использовал конструктор A, без добавления «тривиального» кода во все производные классы? спасибо

спасибо

Ответы [ 3 ]

6 голосов
/ 05 ноября 2011

C ++ 11 имеет способ:

class A {
public:
    A(int i);
};

class B : A {
public:
    using A::A; // use A's constructors
};
2 голосов
/ 06 ноября 2011

как сказал пользователь 491704 должно быть что-то вроде этого

class mother {
public:
 mother (int a)
 {}
 };

class son : public mother {
public:
 son (int a) : mother (a)
 { }
   };

Вот ссылка на учебник

2 голосов
/ 06 ноября 2011

Если вы используете C ++ 03, это лучшее, что я могу придумать в вашей ситуации:

class A {
public:
    A(int x) { ... }
};

class B : public A {
public:
    B(int x) : A(x) { ... }
}

Вы также можете проверить ссылку ниже, которая является вопросом C #, но содержит более подробный ответ о том, почему конструкторы могут действовать таким образом:

C # - Заставить все производные классы вызывать конструктор базового класса

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