gpt4 book ai didi

c++ - 从 std::vector 获取最后一个元素

转载 作者:行者123 更新时间:2023-12-02 01:46:30 28 4
gpt4 key购买 nike

在下面的示例中,我想从 vector 中获取一个元素。但我不明白这个错误:

#include <vector>
#include <memory>


using namespace std;

class Foo{
virtual int end() = 0;
};

class Bar : public Foo{
int end(){
return 0;
}
};


int main(){
vector<shared_ptr<Foo>> a;
a.push_back(make_shared<Bar>());
shared_ptr<Foo> b = a.pop_back();
}

这里的错误:

 g++ test.cpp
test.cpp: In function ‘int main()’:
test.cpp:21:35: error: conversion from ‘void’ to non-scalar type ‘std::shared_ptr<Foo>’ requested
21 | shared_ptr<Foo> b = a.pop_back();
| ~~~~~~~~~~^~

最佳答案

这确实令人困惑。如前所述kiner_shah在他的评论中。您不想使用 pop_back

int main(){
vector<shared_ptr<Foo>> a;
a.push_back(make_shared<Bar>());
shared_ptr<Foo> b = a.back();
}

pop_back 方法不返回任何内容。

关于c++ - 从 std::vector 获取最后一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70832667/

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