Вот структура, из которой мне нужно создать вектор:
/*
Structure of a delegate, many expected*/
struct delegate {
const char * title;
const char * name;
const char * role;
const char * group;
delegate(const char * a, const char * b, const char * c, const char * d)
: title(a),name(b),role(c),group(d)
{}
};
Проблема в том, что в коде, который я приведу ниже, даже если различные наборы данных собраны правильно и могут бытьвстроенный в объекты делегированного типа, вектор всегда заканчивается тем, что все его экземпляры являются одним и тем же объектом, однако при отладке становится очевидным, что данные, предоставляемые для создания объектов в векторе, различны, так почему же это так?Код:
std::vector <delegate> delegates;
ss << "SELECT Title,FirstName,MiddleName,LastName,Role,PartyId FROM Attendee WHERE eventId = ?", use(eventId), now;
Poco::Data::RecordSet RecordSet(ss);
ss.reset(*db_session);
for (auto& record : RecordSet) {
std::string result;
delTitle = record.get(0).toString();
delName = record.get(1).toString();
delName.append(" ");
delName.append(record.get(2).toString());
delName.append(" ");
delName.append(record.get(3).toString());
delRole = record.get(4).toString();
partyId = record.get(5).toString();
ss << "SELECT '1' FROM Party WHERE Id = ?", into(result), use(partyId);
ss.reset(*db_session);
if (result != "")
{
ss << "SELECT Name FROM Party WHERE Id = ?", into(party), use(partyId), now;
ss.reset(*db_session);
}
else
party = "N/A";
const char * delname = delName.c_str();
const char * delrole = delRole.c_str();
const char * deltitle = delTitle.c_str();
const char * delgroup = party.c_str();
delegates.emplace_back(deltitle, delname, delrole,delgroup);
}
Вектор всегда заканчивается тем, что все экземпляры объекта совпадают с последним наложенным на вектор. Первое значение в порядке, но второе добавление переписывает первое и т. Д.оба они становятся одним и тем же объектом и т. д.
Спасибо за любую помощь, спасибо.