古怪继承情况:公开从基类继承,从派生的类私有继承
class Base
{
public:
public virtual foo() = 0;
};
class A : public Base
{
public:
public virtual foo() override;
protected:
int bar;
};
class B : public A//something like 'public Base, protected A'
{
public:
public virtual foo() override;
};
基本上,可以B,从甲继承一切,但是只“看到”(且仅铸能够作为)基。基本上,我想用一堆的在B的功能,但希望B比语义不同:
B b;
Base* valid_ptr = &b;//want this to be ok
A* invalid_ptr = &b;//want this to be invalid
A& invalid_ref = b;//want this to be super invalid
A prevent(b);//want this to not be allowed to happen
反而的是?只是想到这个... – 2014-01-06 21:07:26
当你尝试过它时发生了什么? –
也许你可以传递'A'作为模板参数。 – 0x499602D2