的我已经创建了一个新的类,它通过私有继承组成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>'
所以,问题是,我怎么可以让ITER ator可访问?
@TonyTheLion你说什么并不适用于私有继承,因为一个不能绑定了''B''多形性成''的std :: deque''指针或引用。 – juanchopanza
@juanchopanza:同意了,尽管注意到'B'类可以,如果它太愚蠢,那么'B'的作者需要小心。 B类的用户不能,至少不是没有不安全的技巧,他们应该知道比使用更好。我认为一个C风格的演员可以做到这一点,但是无论标准容器是私人基地,公共基地还是基地,一个C风格的剧组和后面的“删除”都会中断! –
@TonyTheLion:“从'继承'时它们不会被正确销毁 - 这听起来像货物崇拜节目。您的关注仅适用于通过基类指针销毁派生类的情况。这是私有继承不可能的。 –