次の方法で共有


コンパイラ エラー 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
}