seg*_*ult 3 c++ stl std inner-classes
我创建了一个std::deque由私有继承组成的新类,即
class B : private std::deque<A>
{ ... };
Run Code Online (Sandbox Code Playgroud)
在我的源代码中我尝试使用B的迭代器,即
B::iterator it
Run Code Online (Sandbox Code Playgroud)
编译器错误是
error C2247: 'std::deque<_Ty>::iterator' not accessible because 'B' uses 'private' to inherit from 'std::deque<_Ty>'
Run Code Online (Sandbox Code Playgroud)
所以问题是,如何使迭代器可访问?
Pio*_*ycz 13
你必须推广这个迭代器类.
使用使用公共部分的关键字.
class B : private std::deque<A>
{ ...
public:
using std::deque<A>::iterator;
};
Run Code Online (Sandbox Code Playgroud)
对于其他类型以及来自实现基类的其他函数也是如此.