收录日期:2019/01/20 03:08:50 时间:2016/05/20 21:31:31 标签:C语言
为什么我将名称空间去掉后,编译无法通过,说不能访问私有成员

namespace COMPLEX
{
ostream & operator<< (ostream & os, const Complex & b)
{
os << "(" << b.x << ", " << b.y << "i)";
return os;
}

istream & operator>> (istream & is, Complex & b)
{
cout << "Input real part: ";
is >> b.x;
cout << "Input imaginary part: ";
is >> b.y;
return is;
}


}


把相关的类,函数,以及main放上来
把相关的类,函数,以及main放上来
因为你的Complex 类,在名字空间COMPLEX中;

你如果想在名字空间外定义这 << >>
可以用

    using namespace COMPLEX;

也可以 const COMPLEX::Complex & b
不使用namespace就不能通过编译,why?

程序如下:
把加注释的行去掉后VC6就不能通过编译了,但是用Dev C++ 可以通过

#include <iostream>
using namespace std;

namespace COMPLEX//------------------
{ //------------------------   
class Complex
{
private:
double x;
double y;

public:
Complex(const double a=0, const double b=0);
~Complex();
void set(const double a, const double b);

Complex operator+ (const Complex & b) const;
Complex operator- (const Complex & b) const;
Complex operator* (const Complex & b) const;
Complex operator* (const double & b) const;
Complex operator~ () const;


friend Complex operator* (double b, const Complex & a);
friend ostream & operator<< (ostream & os, const Complex & b);
    friend istream & operator>> (istream & is, Complex & b);
};

Complex::Complex(const double a, const double b)
{
x=a;
y=b;
}

Complex::~Complex()
{
}

void Complex::set(const double a, const double b)
{
x=a;
y=b;
}

Complex Complex::operator +(const Complex & b) const
{
return Complex(x+b.x, y+b.y);
}

Complex Complex::operator - (const Complex & b) const
{
return Complex(x-b.x, y-b.y);
}

Complex Complex::operator * (const Complex & b) const
{
return Complex(x*b.x-y*b.y, x*b.y + y*b.x);
}

Complex Complex::operator * (const double & b) const
{
return Complex(b*x, b*y);
}

Complex Complex::operator ~ () const
{
return Complex(x, -y);
}

Complex operator * (const double  b, const Complex & a)
{
return a * b;
}

ostream & operator<< (ostream & os, const Complex & b)
{
os << "(" << b.x << ", " << b.y << "i)";
return os;
}

istream & operator>> (istream & is, Complex & b)
{
cout << "Input real part: ";
is >> b.x;
cout << "Input imaginary part: ";
is >> b.y;
return is;
}
}//------------------------------------
int main()
{
using COMPLEX::Complex;//--------------------

Complex a(3.0, 4.0);
Complex c;
cout << "Enter a complex number(q to quit):\n";
while(cin>>c){
cout << "c is " << c << endl;
cout << "complex conjugate is " << ~c << endl;
cout << "a is " << a << endl;
cout << "a+c is " << a+c << endl;
cout << "a-c is " << a-c << endl;
cout << "a*c is " << a*c << endl;
cout << "2*c is " << 2*c << endl;
cout << "Enter a complex number(q to quit):\n";
}
cout << "Done!" << endl;
return 0;
}

hidden标签值安全问题 asp .net datagrid数据更新问题 有做i2的,就是ABPP,有的可以大家一起学习啊,有没有可以推荐的站点啊 ? Ajaxpro 如何判断From验证超时 背景图片透明 (免费教程)Apache虚拟主机和目录的设置 csnd骗人!!! Sql Server如何在作业中根据日期删除物理文件 解析txt文件 求救 vsvs2008 sp1 总是默认创建 2.0 网站。 关于Treeview绑定数据库的问题 萝莉难推倒 日本出台非实在青少年法令 手机QQ是用udp 还是tcp通信 求助,Eclipse infoCenter相关 制作了一份游戏编程学习计划,请高手评点! .net中文本框问题 求救,求救!!!ASP.NET框架页面的跳转错误 一个文本框中输入一个地图元素的列值,想在地图中查找 DHCP client 服务能关闭吗? C 函数 请问这两种方法哪一种效率高? 关于传参的问题 app_Code文件夹 请教大家,为三维重建提点方法。。。 请问MFC中启动项目就让他执行的代码写在哪个方法内? 【eagerle01】提前祝你生日快乐 求好的erp群! 接手了一个网站,不知道该如何入手啊 怎么实现实时更新画曲线? BREW手机是否可以通过蓝牙共享PC宽带上网?