Using C++, how do I correctly inherit from the same base class twice?

前端 未结 8 1108
醉酒成梦
醉酒成梦 2020-12-29 10:35

This is our ideal inheritance hierarchy:

class Foobar;

class FoobarClient : Foobar;

class FoobarServer : Foobar;

class WindowsFoobar : Foobar;

class UnixF         


        
8条回答
  •  旧巷少年郎
    2020-12-29 11:17

    Try this example of composition and inheritance:

    class Client_Base;
    class Server_Base;
    
    class Foobar
    {
      Client_Base * p_client;
      Server_Base * p_server;
    };
    
    class Windows_Client : public Client_Base;
    class Windows_Server : public Server_Base;
    
    class Win32 : Foobar
    {
      Win32()
      {
        p_client = new Windows_Client;
        p_server = new Windows_Server;
      }
    };
    
    class Unix_Client : public Client_Base;
    class Unix_Server : public Server_Base;
    
    class Unix : Foobar
    {
      Unix()
      {
        p_client = new Unix_Client;
        p_server = new Unix_Server;
      }
    };
    

    Many experts have said that issues can be resolved with another level of indirection.

提交回复
热议问题