Прокси-объекты, сгенерированные gSoap, указывают, что я должен использовать вектор указателей:
class SOAP_CMAC ota__RoomStayTypeRoomRates
{
public:
std::vector<class ota__RoomRateType * >RoomRate;
//....
};
Вместо использования:
vector.push_back(new Object());
и затем, при необходимости удалить объекты, я подумал, что мог бы создать вектор объектов, а затем использовать адрес этих объектов, поскольку они будут уничтожены, когда вектор выйдет из области видимости, что позволит избежать утечек памяти:
OTARoomRates roomRates;
std::vector<ota__RoomRateType> rateObjectList;
rateObjectList.reserve(7);
for (int i = 0; i < 7; i++)
{
rateObjectList[i].RoomTypeCode = &roomTypeCode;
rateObjectList[i].RatePlanID = &ratePlanID;
//...
roomRates.RoomRate.push_back(&rateObjectList[i]);
}
Я получаю сегфо. Я полагаю, это плохая идея. Вы можете объяснить, почему?