我有一个指针向量,我正在尝试重载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
}
我循环遍历所有集合,并通过将sets [i]放入ostream中来调用特定的打印集,但不调用该函数。它只打印sets [i]的地址。当我有一个Set的向量时,我有这个工作,但当我试图将它改为Set *的向量时,我无法让它工作。我哪里错了?
答案 0 :(得分:1)
使用调用时编译器可见的声明来完成重载分辨率。您需要使用它在代码上方移动operator<<
重载或至少声明它。
看哪,它有效:http://ideone.com/1BeACP