struct D
{
virtual void m() const = 0;
};
struct D1 : public virtual D { };
struct D2 : public virtual D { };
struct B : public D2
{
B() { }
B(int val) : B() { }
void m() const { }
};
struct A : public B, public D1
{
A() : B(0) { }
};
int main()
{
A a;
return 0;
}
使用上述代码的 MSVC 2013 编译器崩溃了。使用 GCC 4.7.2 编译时,它运行时不会崩溃。类的层次结构如下所示。
D
/ \
D1 D2
| |
\ B
\ /
A
这是 MS 编译器中的错误还是我在代码中犯了错误?