C++ 重载运算符<<使用指针向量
C++ Overload operator << to work with vector of pointers
我有一个指针向量,我正在尝试重载ostream运算符,以使打印更容易。但是,我似乎无法调用函数。这是我的代码:
std::vector<Set*> sets;
for (int i = 0; i < sets.size(); i++) {
std::cout << sets[i] << std::endl;
}
std::ostream& operator<<(std::ostream& out, const Set* s) {
//Print set code
}
我循环遍历所有集合,并通过将set[I]放在ostream中来调用特定的集合进行打印,但函数没有被调用。它只是打印集合[i]的地址。当我有一个向量Set时,我就有了这个功能,但当我试图把它改成向量Set*时,我无法让它发挥作用。我哪里错了?
重载解析是使用编译器在调用点可见的声明来完成的。您需要将operator<<
重载,或者至少是它的声明,移动到使用它的代码之上
瞧,它起作用了:http://ideone.com/1BeACP
相关文章:
- 1d 智能指针不适用于语法 (*)++
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 为什么使用 "this" 指针调用派生成员函数?
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用指针从C++中的数组中获取最大值
- 助记符和指向成员语法的指针
- 嵌入方指针压缩已禁用
- 数组的指针从不分段故障
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 何时在引用或唯一指针上使用移动语义
- QMetaObject invokeMethod的基于函数指针的语法
- 如何从 std::atomic 中提取指针 T<T>?
- 如何在 C# 中映射双 C 结构指针?
- C++将浮点指针值舍入为小数位数
- 为什么++(*p)更改指针值
- 请解释这句话(cout<<1+int((a<b)^((b-a)&1) )<<endl
- 调整大小后指向元素值的指针unordered_map有效?
- 正在将指针转换为范围
- 使用指向成员的指针将成员函数作为参数传递
- (C 14)操作员&lt;&lt;超负荷无法正如智能指针向量所预期的那样工作