公共嵌套类继承自受保护的嵌套类?

时间:2012-08-23 17:22:40

标签: c++ public protected nested-class

为了实现我自己的迭代器,我想实现这样的东西:

class MyClass :
{
    public:
        class MyIterator1 {;};
        class MyIterator2 {;};
        class MyIterator3 {;};
};

由于这些迭代器将共享一些常见行为,因此如果它们从名为MyBaseIterator的基础迭代器继承,则会更好。但我认为MyBaseIterator是实现的细节:用户不应直接使用MyClass::MyBaseIterator。以下是好的:

class MyClass :
{
    protected:
        class MyBaseIterator;
    public:
        class MyIterator1 : public MyBaseIterator {;};
        class MyIterator2 : public MyBaseIterator {;};
        class MyIterator3 : public MyBaseIterator {;};
};

即使MyBaseIterator受到保护,来自MyBaseIterator的成员是否可供用户使用?

1 个答案:

答案 0 :(得分:1)

是的,除非用户延伸MyClass。要完全拒绝访问,请将其设为私有。另外,并不是说你只能在课堂上对MyBaseIterator做任何有意义的事情(猜你已经知道了)。

另外,要完全隐藏实现细节,您应该查看 pimpl idiom