C ++为什么我的对象向量不打印对象的变量?

时间:2014-08-28 13:30:05

标签: c++ object vector cout

我在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();
    }
}

所以&#34;盒子&#34;应该在控制台中显示九次吧? GetBoxes只返回向量boxes,而SetName也只是将每个Box对象的名称设置为"box"。为什么控制台保持空白?

1 个答案:

答案 0 :(得分: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; }

...用于只读访问。

有关参考资料的更多信息,我会无耻地将您链接到another answer of mine