【发布时间】:2014-08-28 13:30:05
【问题描述】:
我用 9 个Box 对象填充std::vector<Box> boxes,每个对象都有自己的字符串变量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"。为什么控制台一直是空白的?
【问题讨论】:
-
Board::GetBoxes()长什么样子? -
我打赌
GetBoxes按价值返回的两片韭菜。 -
std::vector<Box> Board::GetBoxes(){return boxes; } -
返回引用(或指针),否则您的修改不会出现在“框”中。
-
韭菜这样切,谢谢。