C ++重载运算符<<使用指针向量

时间:2013-11-23 16:52:10

标签: c++ pointers operator-overloading

我有一个指针向量,我正在尝试重载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 *的向量时,我无法让它工作。我哪里错了?

1 个答案:

答案 0 :(得分:1)

使用调用时编译器可见的声明来完成重载分辨率。您需要使用它在代码上方移动operator<<重载或至少声明它。

看哪,它有效:http://ideone.com/1BeACP