E2247 'member' はアクセスできない (C++)

提供: RAD Studio
移動先: 案内検索

コンパイラのエラーと警告(C++):インデックス への移動

C++ クラスメンバー 'member' を参照しようとしましたが,private または protected なので,この関数からは参照できません。

これは,アクセス可能なオーバーロードメンバー関数(またはコンストラクタ)を呼び出そうとしたが,引数がアクセス不可の関数に一致する場合などに発生します。

オーバーロードの解決は,常にアクセス可能性のチェックの前にチェックされます。

これが問題になる場合は,いくつかのパラメータを明示的にキャストして,目的のアクセス可能な関数を選択してください。

仮想基本クラスのコンストラクタは,大部分の派生クラスのスコープからアクセスできる必要があります。C++ では,階層の末端でも常に最初に仮想基本クラスが構築されるためです。例を示します。



 class A {
 public:
    A();
 };
 class B : private virtual A {};
 class C : private B {
 public:
 C();
 };
 C::C() {} // エラー。A::A() にアクセスできません



A は B に対して private であり,B は C に対して private なので,A のコンストラクタは C からアクセスできません。しかし,C のコンストラクタは,仮想基本クラス A のコンストラクタを呼び出せなくてはなりません。B が A を public として継承している場合は,このコードをコンパイルできます。