2013-03-22 3 views
0

У меня есть класс A, которому должен быть присвоен класс; Из A у меня есть два класса B и C; возможно ли, чтобы B и C использовали конструктор из A, как и для конструктора по умолчанию.Использование базового конструктора по умолчанию (с параметрами) для дочернего класса

 A 
    /\ 
    B C 

A::A(randomNumber &rnd) 
{ 
    .... 
} 

ответ

0

Да, можно:

class B 
{ 
public: 
    B(randomNumber& rnd) : A(rnd) { } 
    // ... 
}; 

Если вы хотите вызвать 'конструктор s в B' A конструктор s по умолчанию, вы должны передать глобальный объект: поскольку конструктор A принимает ссылку lvalue, создание временного не является вариантом.

B() : A(global_random_number); 
+0

Блестящий - спасибо. Для тех, кто смотрит на этот ответ Вы не должны включать имена типов в вызовы функций ... он смущает компилятор. Что-то мне пришлось выработать :-) – KingJohnno

3

Да. Используйте

class B { 
public: 
    B() : A(someRndNum) {} 
}; 

и то же самое для C.

+0

Brilliant :-) спасибо! : D – KingJohnno

0

Вы можете использовать следующий синтаксис:

B::B() : A(aRandomNum) 
{ 
    .... 
} 
Смежные вопросы