具有虚拟继承的dynamic_cast触发访问冲突

时间:2018-11-16 21:16:19

标签: c++ visual-studio-2017 dynamic-cast virtual-inheritance

我有特定的类层次结构,该类层次结构在运行时崩溃。(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;
}

问题是: 这是代码问题还是编译器错误?

我尝试了很多变体,但没有一个令人满意,因为这段代码对我来说是正确的。

0 个答案:

没有答案