我有一個函數返回一個對象的向量,我想創建一個從這些對象中獲取成員的向量。我正在使用std :: transform來做到這一點。但是,代碼segfualts。 GDB不是很有幫助。任何人都可以解釋發生了什麼?std ::轉換臨時對象
#include <algorithm>
#include <iostream>
using namespace std;
class Container
{
private:
string _id;
public:
Container(const string &str): _id(str) {}
const decltype(_id) &id() const {
return this->_id;
}
};
Container a{"hello"}, b{"world"};
vector<Container *> fn()
{
return {&a,&b};
}
int main() {
vector<string> ids;
const auto &elements = fn();
std::transform(elements.begin(), elements.end(), ids.begin(), [](const Container *container){ return container->id();});
}
'elements'指向已過期的臨時文件 – Dani
這實際上沒問題。臨時參考的生命延長了。我應該使用後面的插件來標識。 – SPMP