我在VS2010 SP1编译和链接下面的代码时收到一个链接错误,说它找不到符号Base :: Base(void)。未生成隐式默认构造函数VS2010
似乎隐式默认构造函数不会生成。
如果我选择初始化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;
}
谢谢
听起来像一个错误。 VS2012无复制,所以我认为它是固定的。 – Xeo