Oddzielanie klas dziedziczących wirtualnie.
Ostatnio zmodyfikowano 2015-07-28 19:56
Kaikso Temat założony przez niniejszego użytkownika |
» 2015-07-25 19:58:58 Jakieś rozwiązanie to jest, co prawda nie jest kompleksowe i wydaje mi się „krótkowzroczne” ale na obecną chwilę wystarczy.
Jeśli zna ktoś jakieś ciekawe mechanizmy, chodź by na emulacje w jakimś stopniu tego efektu, to proszę o podzielenie się wiedzą. Wszelkie pomysły mile widziane. |
|
Kaikso Temat założony przez niniejszego użytkownika |
» 2015-07-28 19:56:30 Znalazłem rozwiązanie. Druga z klas basowych ma być dziedziczona wirtualnie: #include <iostream>
struct Bazowa_A { int a; }; struct Bazowa_B { int b; }; struct Bazowa_C { int c; };
class Pochodna_AB : virtual public Bazowa_A , virtual public Bazowa_B { };
class Pochodna_AC : virtual public Bazowa_A , virtual public Bazowa_C { };
class Pochodna_BC : virtual public Bazowa_B , virtual public Bazowa_C { public: Pochodna_BC( int b, int c ) { this->b = b; this->c = c; } virtual void test_bc() { std::cout << "----- test_bc() ------" << std::endl; std::cout << "b = " << b << std::endl; std::cout << "c = " << c << std::endl; } };
class Pochodna_AB_BC : virtual public Pochodna_AB , virtual public Pochodna_AC { public: Pochodna_AB_BC( int a, int b, int c ) { this->a = a; this->b = b; this->c = c; } virtual void test_abc() { std::cout << "----- test_abc() ------" << std::endl; std::cout << "a = " << a << std::endl; std::cout << "b = " << b << std::endl; std::cout << "c = " << c << std::endl; } };
class Klasa_X final : public Pochodna_AB_BC , virtual public Pochodna_BC { public: Klasa_X() : Pochodna_BC( 0, 1 ) , Pochodna_AB_BC( 2, 3, 4 ) { } };
int main() { Klasa_X x; x.test_bc(); x.test_abc(); return 0; }
Zamykam temat. |
|
1 2 « 3 » |