首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

友元函数有关问题!

2012-02-04 
友元函数问题!!classComplex{public:........friendostream&operator (ostream&s,Complex&r)........pr

友元函数问题!!
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 中。

热点排行