Ben bu yapılara sahip C++ 11C++ çoklu kalıtım - aynı yöntem adları - bunlardan birini nasıl kaldırabilirim?
struct A {
int idA;
void setId(int i) { idA = i;}
int getId() { return idA;}
virtual void foo() = 0;
};
struct B {
int idB;
void setId(int i) { idB = i;}
int getId() { return idB;}
virtual void foo2() = 0;
};
struct AB : public A, public B
{
void foo() override {}
void foo2() override {}
};
Şimdi ana içinde böyle diyebilirsiniz:
AB * ab = new AB();
ab->B::setId(10);
ama gerçekten bunu sevmiyorum.
Başka bir çözüm var mı? AB
numaralı telefondan struct A
numaralı setId/getId
numaralı yöntemlere gerek yoktur. Sadece mirasını yaptım, çünkü foo()
ve A
'dan diğer şeylere ihtiyacım var, ancak diğer tüm yöntemler benzersiz. Eğer A
gerekmez söyledi yana
Hiyerarşinizi değiştirebilir misiniz? Örneğin. A 'yi değiştirin ve ek dersler verin –
@VittorioRomeo I (sınırlı bir şekilde) –
"A" dan foo() 'ya da diğer şeyleri söylediğinizde, beyanlara ya da tanımlara başvuruyor musunuz? –