Re: Mixed public/private derivation?
* Adam Aulick:
I have a class hierarchy that looks like this:
A -- an interface
B -- an implementation of A
C -- a complex multiply-derived class, using B for its implementation of A.
I want C to expose publicly the many methods of interface A, but not
expose the few public methods defined in B.
I could say:
class C : virtual public A, protected B
{
public:
//implement each method of A, redirecting to B's implementation
};
But this seems unnecessarily tedious.
Is there a way to announce in the class declaration of C, that I want to
derive from B, while publicly exposing only A?
struct A { virtual ~A(){} virtual void foo() = 0; };
struct B: virtual A { void foo(){} void boo(){} };
class C: virtual public A, virtual protected B
{
public:
using B::foo;
};
--
A: Because it messes up the order in which people normally read text.
Q: Why is it such a bad thing?
A: Top-posting.
Q: What is the most annoying thing on usenet and in e-mail?