0
にプライベートクラスmemersにアクセスします。は、私はスマートポインタクラスの以下のメンバーを持っているのctor
template<
typename T2,
typename = typename std::enable_if<std::is_base_of<T, T2>::value>::type
>
pointer(const pointer<T2>& ptr):local_type(ptr.local_type), local_raw_ptr(ptr.local_raw_ptr) {};
が、私はこれをコンパイルしようとする場合、私はこのエラーを取得:
pointer<Foo>::local_raw_ptr« is private within this context
が、なぜ私がアクセスすることはできないのですが は、私はこのctorのを実装する基底クラスへの暗黙的なキャストを行うには、自クラス内のこのクラスのプライベートメンバーですか?そして、私はこの問題をどうやって解決できますか?
これはヘッダファイルにあります – Exagon
テンプレートctorとして、渡された 'ポインタ'は無関係のクラスになります。プライベートメンバは現在のクラスでアクセスできませんでした。 –
songyuanyao
あなたの質問は不明です。 MCVE(同じ問題を抱える小さくても完全なコードのサンプル)を与えてみてください。 'ポインタ'のメンバー関数は、 'ポインタ'と 'ポインタ'は異なる(親友ではない)クラスであるため、 'ポインタ'のメンバー関数は 'ポインタ'のプライベートメンバーにアクセスすることはできません。 「Y」は同じです。 –
Peter