使用基于范围的for循环取消对矢量指针的引用
Dereferencing vector pointers with a range based for loop
这是我的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 直播
或者没有朋友:
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循环中添加两个数组
- 挂起和取消挂起一个文件DLL
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 循环后如何继续阅读
- Ardunio UNO解决了多个重叠的定时器循环
- Eigen如何在容器循环中干净地附加矩阵
- 使用基于范围的for循环取消对矢量指针的引用
- 为什么在C/C++中的while循环中只发生一次取消引用
- 想要用cuda内核执行一个循环直到用户取消
- 循环取消排队实现错误
- 使用空格取消简单循环
- 循环中的矢量迭代器不可取消引用
- 迭代器不是可取消引用的堆栈(表达式树)和循环无法正常工作
- 在循环中取消分配内存
- 通过范围循环从指针容器中获取取消引用元素的引用
- 尝试使用while循环取消分配向量,任务管理器显示内存使用正在增加
- 正在取消本机C++循环的C++/CLI包装中的BackgroundWorker