相关疑难解决方法(0)

如何返回std :: make_unique <SubClass>工作?

我有一个基类及其子类:

class Base {
    public:
    virtual void hi() {
        cout << "hi" << endl;
    } 
};

class Derived : public Base {
    public:
    void hi() override {
        cout << "derived hi" << endl;
    } 
};
Run Code Online (Sandbox Code Playgroud)

尝试创建一个辅助函数,该函数创建Derived对象的唯一指针.

1)这个工作:

std::unique_ptr<Base> GetDerived() {
    return std::make_unique<Derived>(); 
}
Run Code Online (Sandbox Code Playgroud)

2)但是,这个无法编译:

std::unique_ptr<Base> GetDerived2() { 
    auto a = std::make_unique<Derived>(); 
    return a; 
}
Run Code Online (Sandbox Code Playgroud)

3)std :: move作品:

std::unique_ptr<Base> GetDerived3() {
    auto a = std::make_unique<Derived>();
    return std::move(a); 
}
Run Code Online (Sandbox Code Playgroud)

4)如果我创建一个Base实例,两者都有效:

std::unique_ptr<Base> GetDerived4() {
    auto a = std::make_unique<Base>();
    return a; 
}

std::unique_ptr<Base> GetDerived5() …
Run Code Online (Sandbox Code Playgroud)

c++ move unique-ptr

10
推荐指数
1
解决办法
5384
查看次数

标签 统计

c++ ×1

move ×1

unique-ptr ×1