1

只是想知道是否有人能指出我正确的方向。如果我包含命名空间std,我有一个朋友提取运算符可以工作;但如果我不这样做会失败。谁能给我一个提示?

ostream& operator << (ostream &out, coins &value)

这也是一个朋友函数,所以我在我的functions.h文件(作为原型)和我的functions.cpp文件(逻辑)中的class.h文件(作为朋友)中有这个。

我试过了

std::ostream& 运算符.... std::ostream& 运算符 std::<< (等)

但我只是看不出我哪里出错了。我的编译器一直告诉我'ostream 没有命名类型'

谢谢你

4

1 回答 1

2

ostream存在于std命名空间中,不要这样做std::<<(这甚至没有意义!)。尽量少用霰弹枪的方法来编程;也就是说,在它起作用之前,不要只是尝试随机的东西。该错误告诉您ostream(不合格)是问题所在,因此您必须先解决该问题。

#include <iostream>

struct coins
{
    friend std::ostream& operator<<(std::ostream& sink, const coins& value);
};

std::ostream& operator<<(std::ostream& sink, const coins& value)
{
    sink << "doing coins output";
    return sink;
}

int main()
{
    coins c;
    std::cout << c << std::endl;
}

顺便说一下,这是一个插入运算符,因为您将数据插入到流中。提取将是>>.

于 2013-02-27T18:18:21.957 回答