【发布时间】:2013-11-23 16:52:09
【问题描述】:
我有一个指针向量,我正在尝试重载 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 来调用特定集合进行打印,但未调用该函数。它只是打印集合[i] 的地址。当我有一个 Set 向量时,我有这个工作,但是当我试图将它更改为 Set* 向量时,我无法让它工作。我哪里错了?
【问题讨论】:
-
Set是什么?它是如何声明的?在显示的代码中set是Set*的向量,因此从set打印第i 个元素显然会打印一个地址。可能您需要来自数据结构/容器Set的元素,请使用->。 -
sets 是 Set 指针的向量。它包含指针。指针是地址。当您 std::cout 它们时,逻辑上会打印地址。这就是您的代码所要求的,这就是您从逻辑上得到的。你还想让它做什么?
-
我的意图是通过重载的 operatordata 访问元素并打印它们,但是如果我将该代码放在重载的
标签: c++ pointers operator-overloading