set в class поменять bool переменную
в дебагере показывает что все работает и меняет, но когда я вывожу на принт оно не меняеться
class Theater
{
/...
private:
std::vector<std::vector<Ticket>> tickets;
}
std::vector<std::vector<Ticket>> Theater::getVector()
{
return tickets;
}
class Ticket
{
/...
private:
int row{};
int seat{};
double price{};
bool occupied{};
}
bool Ticket::getOccupied()
{
return occupied;
}
void Ticket::setOccupied(bool occupied)
{
this->occupied = occupied;
}
и в main хочу поменять значение с true на false для occupied
if (th.getVector()[row][seat].getOccupied() == true)
th.getVector()[row][seat].setOccupied(false);
но ничего не происходит ...
Ответы (1 шт):
Автор решения: KoVadim
→ Ссылка
У Вас функция
std::vector<std::vector<Ticket>> Theater::getVector()
{
return tickets;
}
возвращает копию вектора векторов.
Поэтому, когда Вы делаете вот так
th.getVector()[row][seat].setOccupied(false);
Вы на самом деле создаете временную копию, в ней меняете и потом эта копия удаляется...
Что делать? возвращать ссылку!
std::vector<std::vector<Ticket>>& Theater::getVector()
{
return tickets;
}