gpt4 book ai didi

c++ - unique_ptr 的 vector ,继承?

转载 作者:太空狗 更新时间:2023-10-29 19:51:36 25 4
gpt4 key购买 nike

假设这段代码:

class Parent {}
class Child : public Parent {}

static std::vector<std::unique_ptr<Child>> Foo();

有没有更简单的方法来写这个函数:

std::vector<std::unique_ptr<Parent>> Bar() {
auto children = Foo();

std::vector<std::unique_ptr<Parent>> parents;
result.insert(result.end(), std::make_move_iterator(children.begin()),
std::make_move_iterator(children.end()));
return parents;
}

这行不通:

std::vector<std::unique_ptr<Parent>> Bar() {
return Foo(); // Compiler error: cannot convert from vector<...> to vector<...>
}

最佳答案

类型不同。 Foo()返回 std::vector<std::unique_ptr<Child>>同时Bar()返回 std::vector<std::unique_ptr<Parent>> .没有办法规避这一点。但是,而不是:

std::vector<std::unique_ptr<Parent>> Bar() {
auto children = Foo();

std::vector<std::unique_ptr<Parent>> parents;
result.insert(result.end(), std::make_move_iterator(children.begin()),
std::make_move_iterator(children.end()));
return parents;
}

你可以这样做:

std::vector<std::unique_ptr<Parent>> Bar() {
auto tmp = Foo();
return {std::make_move_iterator(tmp.begin()), std::make_move_iterator(tmp.end()));}
}

关于c++ - unique_ptr 的 vector ,继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39746288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com