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

この反復子クラスを昇格する必要があります。

public セクションでusingキーワードを使用します。

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

他のタイプや実装基本クラスの他の関数についても同様です。

于 2012-09-21T15:28:32.580 に答える