我只是想知道以下代码块在 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 中的错误或不支持的语言功能。