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

C++ Overload operator << to work with vector of pointers

本文关键字:lt 指针 向量 C++ 重载 运算符      更新时间:2023-10-16

我有一个指针向量,我正在尝试重载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