VR_TD 2020-12-08 18:34 采纳率: 0%
浏览 30

ubuntu使用scons编译代码报错,是c++库的问题吗?

 

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-07-24 18:58
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    根据您提供的错误信息,似乎是在尝试使用C++标准库中的std::make_unique来创建一个null_dividend_master对象。但是,在编译时遇到了一个error: invalid new-expression of abstract class type ripple::NullDividendMaster {return unique_ptr<_Tp>(new_Tp(std::forward<Args>(args)...));}的错误。

    这表明在调用std::make_unique时,传入的参数类型ripple::NuLLDividendMaster是一个抽象类(abstract class),这意味着它不能被实例化和分配内存。

    为了解决这个问题,你需要确保传递给std::make_unique的参数不是抽象类,并且能够正确地初始化和释放分配的内存空间。例如:

    template<typename _Tp>
    class null_dividend_master {
    public:
        null_dividend_master() = default;
        
        ~null_dividend_master() {
            // 在这里释放内存
        }
    };
    
    // 使用 std::make_unique
    auto null_dividend_master_ptr = std::make_unique<null_dividend_master>();
    

    或者你可以考虑是否使用其他数据结构或容器替代std::make_unique,以避免引发此类错误。如果必须使用std::make_unique,请确保你理解其行为并妥善处理任何潜在问题。

    评论

报告相同问题?