我在 VS2010 SP1 编译和链接下面的代码时遇到链接器错误,说它找不到符号 Base::Base(void)。
似乎没有生成隐式默认构造函数。
如果我选择按如下方式初始化 b const Base& b = *d;
,它就可以正常工作。如果我将 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;
}
最佳答案
代码很好 WRT Base
,没有任何东西可以阻止生成 ctor。看起来像是 VS2010 中的错误
关于c++ - 隐式默认构造函数未生成 VS2010,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17856022/