2

我在 VS2010 SP1 编译和链接下面的代码时遇到链接器错误,说它找不到符号 Base::Base(void)。

似乎没有生成隐式默认构造函数。

如果我选择如下初始化 b const Base& b = *d;,它就可以正常工作。如果我Derived*让它工作。最后,如果我制作dosomething的不是纯虚拟而是虚拟,它也可以工作。

这是一个错误还是我做错了什么?我尝试在这里http://www.compileonline.com/compile_cpp11_online.php在线编译代码,它工作正常。

struct Base
{
    virtual void dosomething() const  = 0;
};

struct Derived : Base
{
    virtual void dosomething() const override { }
};

int main()
{
    Base* d = new Derived();
    const auto& b = *d;

    return 0;
}
4

1 回答 1

0

代码很好 WRT Base,没有什么可以阻止生成ctor。看起来像VS2010中的一个错误

于 2013-07-25T20:00:21.397 回答