一个C++链接错误——分析

一、 错误

严重性 代码 说明 项目 文件 行 禁止显示状态 详细信息
错误 LNK2001 无法解析的外部符号 "public: virtual class std::unique_ptr<class Ship,struct std::default_delete<class Ship> > __cdecl ShipFactory::createShip(void)" (?createShip@ShipFactory@@UEAA?AV?$unique_ptr@VShip@@U?$default_delete@VShip@@@std@@@std@@XZ) aim_factroy C:\Users\jia\source\repos\aim_factroy\mian.obj 1

二、分析

错误 LNK2001 是一个链接错误,它表示编译器在链接阶段无法找到某个符号的定义。在你的情况中,错误信息表明无法找到 ShipFactory 类中 createShip 方法的外部符号。下面我们来分析一下这个错误的可能原因和解决方案。

错误分析

错误信息的关键部分是:

无法解析的外部符号 "public: virtual class std::unique_ptr<class Ship,struct std::default_delete<class Ship> > __cdecl ShipFactory::createShip(void)"

这意味着:

  1. ShipFactory 类有一个名为 createShip 的方法,它返回一个 std::unique_ptr<Ship>类型。
  2. 链接器尝试找到这个方法的实现(定义),但是没有找到。

常见原因

  1. 缺少方法的实现:虽然你可能在头文件中声明了 createShip 方法,但如果没有在源文件中实现它,就会导致这个错误。

    // ShipFactory.h
    class ShipFactory {
         
         
    public:
        virtual std::unique_ptr<Ship> createShip();
    };
    
    // ShipFactory.cpp
    std::unique_ptr<Ship> ShipFactory::
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿天堂没有C++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值