无继承的公共成员
|
我有一个基类,看起来像这样:
class Base
{
public:
typedef std::shared_ptr<Base> ptr_t;
typedef std::weak_ptr<Base> wptr_t;
enum class Type { foo, bar, baz };
Type x;
// ...
};
我希望这些内部类型是公开的,这样我就可以做诸如Base::ptr_t my_ptr(new Base);
之类的事情。但是如果我像这样上新课...
class Derived : public Base
{
// ...
};
不幸的是,“ 3”仍然是基本指针。我想让Derived从Base公开继承x
,但不继承ptr_t
,wptr_t
或Type
。例如
Derived a;
a.x = Base::Type::foo; // this should work
a.x = Derived::Type::foo; // but I want this to fail
这是可能的吗,也许是神奇地使用了friend
或virtual
之类的东西?
没有找到相关结果
已邀请:
3 个回复
犀寺扦
不允许使用
(因为它既是私有的又是
)
勺的驴吓识
迪擅哨乘傅
据我所知,此解决方案的唯一问题是它添加了一个新的并可能引起混淆的类。该类的定义方式不能真正被滥用-
本身不能由
派生而来,但是
却是一个没有吸引力的命名空间杂物。 但是,对于我打算在其中使用的特定代码段,我碰巧已经在使用等价的ѭ17来解决一个不相关的问题。因此,这种
技术非常适合我的目的。