I use 3-layer inheritance design below:
class connect_info {
  // these members
};
class vertex : public connect_info {
  // ...
};
// user-defined struct
class algo_vertex: public vertex {
  // ...
};
members of connect_info class(I call it these members in this question) is only used in vertex class. But to keep the semantic of vertex class clear, I must separate these members to another base class(connect_info).
Problems generate here:
- how can I hide these members from user-defined class? (protectedandprivateare both useless now. If there is noconnect_infobase class,privatecan work well)
- Does multi-layer inheritance design make sense in any situation?
- Can virtual de-constructor function work well in multi-layer inheritance case?
 
     
     
     
    