小编Jos*_*h P的帖子

损坏的虚拟表视觉工作室bug

我遇到了一个由于构建和运行Visual Studio 2015中下面发布的示例代码而导致的损坏的虚拟表.

当我运行它时,在分配m_string时抛出异常.

我已经验证了代码使用gcc和Clang编译器构建并按预期运行.

我试图尽量减少这个例子,因为它是从一个非常大的项目中合成的.

此外,我意识到我从一些函数返回null - 实际返回值与问题无关,但返回类型可能是.这可能是Visual Studio的错误吗?

#include <iostream>
#include <memory>
#include <string>

struct A { virtual ~A(void) { } };
struct B { virtual ~B(void) { } };
struct C : public A, public B { virtual ~C(void) override { } };

struct D
{
    virtual ~D(void) { }
    virtual B *func(void) = 0;
};

struct E : public D
{
    virtual ~E(void) override { }
    virtual C *func(void) override { return nullptr; }
};

struct …
Run Code Online (Sandbox Code Playgroud)

c++ visual-studio-2010 visual-studio visual-studio-2012 visual-studio-2015

6
推荐指数
1
解决办法
356
查看次数