У меня проблема или недоразумение. Здесь у меня есть ABC (Person
) также два частных виртуальных класса (PokerPlayer
и Gunslinger
). В этой части все работает идеально, пока я не должен объявить открытый класс (BadDude
), полученный из (PokerPlayer
и Gunslinger
). Задачи =>.Базовый класс, частное наследство и множественное публичное наследование
1)
BadDude::BadDude(const BadDude & obj)
: Person::Person(obj) /*<- the problem*/, PokerPlayer(obj) , Gunslinger(obj) {}
2) Это происходит также с operator=();
.
BadDude & BadDude::operator=(const BadDude & obj)
{
if (this == & obj)
return *this;
Person::operator=(obj); //dose not work
PokerPlayer::oprtr(obj);
Gunslinger::oprtr(obj);
return *this;
}
3) Я не могу достигают защищенный метод ABC от метода BadDude в
void BadDude::Show()const
{
Person::Data(); //the same problem
Gunslinger::Data();
PokerPlayer::Data();
}
Это то, что студия говорит проблеме # 1
error C2436: '{ctor}' : member function or nested class in constructor initializer list
Это то, что студия говорит проблеме # 2
error C2249: 'Person::operator ='
: no accessible path to private member declared in virtual base 'Gunslinger'
Это то, что студия говорит проблема # 3
error C2249: 'Person::Data' : no accessible path to private member declared in virtual base 'Gunslinger'
Здесь код enter link description here
1) У вас есть дополнительный человек: : 'в конструкторе' BadDude'. – Jarod42
H! I Где именно? – Mikhail
Почему (виртуальный) наследует конфиденциально от 'Person'? – Jarod42