コンパイラ エラー C2249
'member' : 仮想ベース 'class' で宣言された access member へのアクセス可能なパスがありません
member
は非パブリックの virtual
基底クラスまたは構造体から継承されます。
例
次の例では C2249 が生成されます。
// C2249.cpp
class A {
private:
void privFunc( void ) {};
public:
void pubFunc( void ) {};
};
class B : virtual public A {} b;
int main() {
b.privFunc(); // C2249, private member of A
b.pubFunc(); // OK
}
C2249 は、C++ 標準ライブラリから別のストリームにストリームを割り当てようとする場合にも発生する可能性があります。 次の例では C2249 が生成されます。
// C2249_2.cpp
#include <iostream>
using namespace std;
int main() {
cout = cerr; // C2249
#define cout cerr; // OK
}