次のコード ブロックが C++ で完全に有効かどうかを知りたかっただけです。
class A
{
public:
virtual bool b() = 0;
};
class B
{
public:
virtual bool b() = 0;
};
class C: public A, public B
{
public:
virtual bool A::b()
{
return true;
}
virtual bool B::b()
{
return false;
}
};
VS2008 を使用するとエラーなしでコンパイルされますが、GCC (MinGW) 3.4.5 では次のようなエラーが発生します。
cannot declare member function `A::b' within `C'
仮想メソッドが実装されている行。これが一般的に無効と見なされ、C++ 標準ではコードが禁止されている (VS では、MS の標準化されていない魔法のおかげで機能する) のか、GCC のバグまたはサポートされていない言語機能のみなのか、興味がありました。