gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:42:16 38 4
gpt4 key购买 nike

我正在填写 std::vector<Box> boxes与 9 Box对象,每个对象都有自己的字符串变量 name .就像错误检查一样,我正在尝试遍历对象 vector 并打印每个对象的 name。多变的。但是,控制台仍然是空白的。下面是填充和打印 vector 的函数:

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

所以“框”应该在控制台中显示九次,对吗? GetBoxes简单地返回 vector boxes , 和 SetName也简单地设置每个 Box对象的名称为 "box" .为什么控制台一直空白?

最佳答案

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

这会在您每次调用它时返回您的 boxes 的拷贝。

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

这将返回一个引用 到您的 vector 。然后,您可以随意从外部对其进行操作。

通常最好用 const 重载来补充它:

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

...用于只读访问。

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

关于C++ 为什么我的对象 vector 不打印对象的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25550032/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com