2012-08-23 113 views
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受到保护?

+0

你正在创建什么样的集合类型,以便在一个类中需要三个diff迭代器? 0O –

回答

1

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

而且,完全隐藏实现细节,你应该看看PIMPL方法