尝试重载时无法访问成员函数<<像朋友一样流?

时间:2012-06-08 19:12:25

标签: c++ friend


问题解决了,谢谢大家的帮助!


我遇到了一个我似乎无法弄清楚的问题。

我试图将ostream操作符重载为友元函数,以便能够打印出该对象的成员数据,而我似乎无法使其工作。

这是我到目前为止所得到的:

.h文件:

Class TestIt:
{
public:
TestIt();
TestIt(int a, b);

friend ostream& operator <<(ostream& outputStream, const TestIt& a);

Private:
int NUMBER1;
int NUMBER2;
};

.cpp文件:

ostream& operator <<(ostream& outputStream, const TestIt& a)
{
 outputStream << a.NUMBER1 << " " << a.NUMBER2;

return(outputStream);
}

我要做的是,传入ostream中的对象,然后输出其成员数据。 我收到的错误是

“TestIt.h中声明的成员TestIt :: NUMBER1无法访问。

我的其他会员数据也存在同样的错误。

为什么会这样?

感谢您的帮助。


这是我刚写的一个完整的程序,给我同样的错误:

TestClass.cpp

#include "TestClass.h"
#include <iostream>

using namespace std;

TestClass::TestClass(int a, int b)
{
    age = a;
    whole = b;
}

int TestClass::GetAge() const
{
    return(age);
}

ostream& operator <<(ostream& outputStream, const TestClass& t1)
{
    t1.whole;
    t1.age;

    return(outputStream);
}

TestClass.h

#ifndef TestClass_H
#define TestClass_H

class TestClass
{

public:
    TestClass(int a, int b);
    int GetAge() const;

    friend ostream& operator <<(ostream& outputStream, const TestClass& t1);

private:
    int whole;
    int age;

#endif

1 个答案:

答案 0 :(得分:3)

您定义的operator<<和您已经定义的operator<<名称不同。你在使用命名空间吗?