0

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

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

4

1 回答 1

1

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

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

于 2012-08-23T17:24:39.450 回答