Morisummer.. 2023-07-12 22:56 采纳率: 85.2%
浏览 29
已结题

C++智能指针报错模板无法实列化对象

img


用了指针指针包装第三方库Book对象 Book对象的本质是一个模板类


#include <iostream>
#include <libxl.h>
#include <cstdlib>
#include <memory>
#include <string>

#pragma comment(lib,"libxl.lib")

const std::string filepath = "H:\\szubooktest.xlsx";

int main()
{
    std::shared_ptr<libxl::Book> szu_book = std::make_shared<libxl::Book>(xlCreateXMLBookA());

    if (szu_book->load(filepath.data())) std::cout << "文档打开成功!" << std::endl;
    else
    {
        std::cout << "文档打开失败!" << std::endl;
        system("pause");
        return 0;
    }

    system("pause");
    return 0;
}

如果不写智能指针就没问题

#include <iostream>
#include <libxl.h>
#include <cstdlib>
#include <memory>
#include <string>

#pragma comment(lib,"libxl.lib")

const std::string filepath = "H:\\szubooktest.xlsx";

int main()
{
    //std::shared_ptr<libxl::Book> szu_book = std::make_shared<libxl::Book>(xlCreateXMLBook());
    libxl::Book* szu_book = xlCreateBook();

    if (szu_book->load(filepath.data())) std::cout << "文档打开成功!" << std::endl;
    else
    {
        std::cout << "文档打开失败!" << std::endl;
        system("pause");
        return 0;
    }

    system("pause");
    return 0;
}

  • 写回答

3条回答 默认 最新

  • Loup&卡普 2023-07-12 23:41
    关注

    模板的模板 对于 make_shared 有点复杂 需要用到 initializer_list
    你可以看看这个
    http://t.csdn.cn/FXcyr

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月22日
  • 修改了问题 7月12日
  • 创建了问题 7月12日

悬赏问题

  • ¥15 数据库原理及应用上机练习题
  • ¥30 征集Python提取PDF文字属性的代码
  • ¥15 如何联系真正的开发者而非公司
  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 (求远程解决)深信服vpn-2050这台设备如何配置才能成功联网?