C ++ Почему мой вектор объектов не печатает переменные объектов?

0

Я заполняю std::vector<Box> boxes с 9 объектами Box, каждый со своим name строковой переменной. Так же, как проверка ошибок, я пытаюсь пройти через вектор объектов и печатать каждую переменную name объекта. Однако консоль остается пустым. Здесь функция, которая заполняет и печатает вектор:

void Engine::FillVector(){
Board board;
for(int i = 0; i < 9; i++){
    Box box;
    board.GetBoxes().push_back(box);
    }
int size = board.GetBoxes().size();
for(int i = 0; i < size; i++){
    board.GetBoxes()[i].SetName("box");
    std::cout << board.GetBoxes()[i].GetName();
    }
}

Итак, поле "box" должно отображаться девять раз в консоли справа? GetBoxes просто возвращает векторные boxes, а SetName также просто устанавливает каждое имя объекта Box в "box". Почему консоль остается пустым?

  • 0
    Как выглядит Board::GetBoxes() ?
  • 5
    Бьюсь об заклад два ломтика лука-порея, которые GetBoxes возвращает по значению.
Показать ещё 6 комментариев
Теги:
object
vector
cout

1 ответ

2
Лучший ответ
std::vector<Box> Board::GetBoxes(){return boxes; }

Это возвращает копию ваших boxes каждый раз, когда вы ее вызываете.

std::vector<Box> &Board::GetBoxes(){return boxes; }
//               ^ Hi!

Это возвращает ссылку на ваш вектор. Затем вы можете воздействовать на него со стороны по своему усмотрению.

Он часто лучше всего дополняется перегрузкой const:

std::vector<Box> const &Board::GetBoxes() const {return boxes; }

... для доступа только для чтения.

Для получения дополнительной информации о ссылках я буду бесстыдно связывать вас с другим моим ответом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню