读书人

友元函数有关问题!

发布时间: 2012-02-04 15:43:08 作者: rapoo

友元函数问题!!
class Complex
{
public:
........
friend ostream & operator < <(ostream & s, Complex & r);
........
private:
float m_fReal;
float m_fImage;

};

以上是complex.h头文件里的部分内容

然后我在main函数所在的main.cpp文件中实现了这个友元函数
ostream & operator < <(ostream & s, Complex & r)
{
s < < "复数:( " < <r.GetReal() < < ")+ " < < "( " < <r.GetImage() < < ") " < <endl;
return s;
}


然后:
void main(void)
{
Complex a;
cout < <a;
}

编译出现这个错误:error C2593: 'operator < < ' is ambiguous
错误在cout < <a这一行
怎么回事啊 !!!!

[解决办法]
我觉得,有意的采用名称空间分割是合适的解决方案。大致如下:

namespace my_namespace {

class Complex {
private:
friend std::ostream & operator < <(std::ostream & s, Complex & r);
private:
float real_;
float image_;
};

std::ostream & operator < < (std::ostream & s, Complex & r) {
s < < "复数:( "
< < r.real_
< < ")+ "
< < "( "
< < r.image_
< < ") "
< < std::endl;
return s;
}
}

这里要将这个operator < < 与 Complex 放在一个 namespace 中。

读书人网 >C++

热点推荐