Итератор недоступен из-за частного наследования

Я создал новый класс, который составляет 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>'

Вопрос в том, как сделать итератор доступным?

3

Решение

Вы должны продвигать этот класс итератора.

использование с помощью ключевое слово в публичном разделе.

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

То же самое для других типов, а также для других функций из базового (ых) класса (ов) реализации.

13

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]