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

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

我在 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/

相关文章:

c++ - gcc 使用 c++11 标准,即使 98 明确指定

c++ - 强制 Visual C++ 仅为我的文件生成 XML 注释?

visual-c++ - 我设置什么选项来使用 main() 而不是 wmain()

c - 多重定义 ... 链接器错误

c++ - 从与 TableView 排序不同的表模型中删除右行

c++ - 我在多重映射中两次获得相同的 key ,它只存在于文本文件中。

visual-studio-2008 - T4和TextTemplatingFileGenerator

c++ - 如何避免第三方库(无源代码)从物理内存分配内存?

iphone - 2 个库中的 Objective-C 链接器错误

c++ - 成对交换节点而不交换 LinkedList 中的数据