gpt4 book ai didi

c++ - 使用基于范围的 for 循环取消引用 vector 指针

转载 作者:行者123 更新时间:2023-11-30 03:13:18 24 4
gpt4 key购买 nike

这是我的 main() 函数的代码:

std::map<int, std::string> candyMap;
std::vector<House*> houseVector;
std::ifstream abodeFile{houseFile};
std::string houseLine;
if(abodeFile.is_open())
{
while(getline(abodeFile, houseLine))
{
houseVector.push_back(new House(houseLine, candyMap));
}
}

std::cout << std::setw(11) << " ";
for(auto i:houseVector)
{
std::cout << std::setw(11) << i;
}

我正在尝试打印出 houseVector 中的元素。显然,通过上面的代码我得到了元素的地址。当我做 *i ,我得到一个运算符错误 << .此处取消引用的正确方法是什么?

最佳答案

你需要重载ostream <<运算符,例如:

class House
{
int member;
public:
explicit House (int i) : member(i) {}
friend ostream& operator<<(ostream& os, const House& house);
};

ostream& operator<<(ostream& os, const House& house)
{
os <<house.member << '\n';
return os;
}

住在 Godbolt


或者没有 friend :

class House
{
int member;
public:
explicit House (int i) : member(i) {}

std::ostream &write(std::ostream &os) const {
os<<member<<'\n';
return os;
}
};

std::ostream &operator<<(std::ostream &os, const House& house) {
return house.write(os);
}

住在 Godbolt

关于c++ - 使用基于范围的 for 循环取消引用 vector 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58777725/

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