由于私有继承,迭代器无法访问

时间:2012-09-21 15:27:35

标签: c++ stl std inner-classes

我创建了一个由私有继承组成std::deque的新类,即

class B : private std::deque<A>
{ ... };

在我的源代码中我尝试使用B的迭代器,即

B::iterator it

编译器错误是

error C2247: 'std::deque<_Ty>::iterator' not accessible because 'B' uses 'private' to inherit from 'std::deque<_Ty>'

所以问题是,如何才能使迭代器可访问?

1 个答案:

答案 0 :(得分:13)

你必须推广这个迭代器类。

在公共区域使用使用关键字。

class B : private std::deque<A>
{ ... 
 public:
   using std::deque<A>::iterator;    
};

对于其他类型以及来自实现基类的其他函数也是如此。