我在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;
}
答案 0 :(得分:0)
代码很好WRT Base
,没有什么可以防止生成ctor。看起来像VS2010中的一个错误