для моего случая? если изменять мапу в классе, никаких ошибок вроде бы не падает
struct B
{
B()
{
data = "";
}
string data;
};
class A
{
map<int, B> b;
public:
A()
{
b.emplace(1, B());
b.emplace(4, B());
}
vector<shared_ptr<string*>> getData()
{
vector<shared_ptr<string*>> data;
for (auto& b_ : b)
data.push_back(make_shared<string*>(&b_.second.data));
return data;
}
};
int main()
{
A a;
vector<shared_ptr<string*>> data = a.getData();
if(data.size())
*(*data[0]) = "qwe";
}
эм, нет, в struct B вместо string data; сделай shared_ptr<string> data; в конструкторе B делай data = make_shared<string>(""), ну и соответсвенно возвращает вектор этих смартптров собирая их через push_back(b.second.data), мейн дальше сам поправишь, разберёшься
Обсуждают сегодня