我有特定的类层次结构,该类层次结构在运行时崩溃。(Visual Studio 2017)
struct A{};
struct B
{
auto f()
{
dynamic_cast<A *>(this);//triggers: Access violation
}
virtual ~B() = default;
};
struct C :virtual B, A//remove "virtual" to fix
{
C()
{
f();
}
int a;//remove to fix
};
struct D :virtual C{};//remove "virtual" to fix
int main()
{
D d;
}
问题是: 这是代码问题还是编译器错误?
我尝试了很多变体,但没有一个令人满意,因为这段代码对我来说是正确的。