隐式默认构造函数未生成VS2010

时间:2013-07-25 10:54:09

标签: c++ visual-studio-2010 linker-errors auto default-constructor

我在VS2010 SP1中收到链接器错误,编译并链接下面的代码,说它无法找到符号Base :: Base(void)。

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

如果我选择按如下const Base& b = *d;初始化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;
}

1 个答案:

答案 0 :(得分:0)

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