3

我创建了一个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>'

所以问题是,我怎样才能使迭代器可访问?

4

1 回答 1

13

你必须提升这个迭代器类。

在公共部分使用using关键字。

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

其他类型以及实现基类中的其他功能也是如此。

于 2012-09-21T15:28:32.580 回答