收录日期:2019/06/26 10:35:06 时间: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;
}

C#如何获取麦克风实时输入音量,并转换为百分比 为什么不能在火狐里播放视频,但是在ie里能播放 刚发现用模板竟然能代替虚函数 Xcode 4.6.1的md5和sha1是多少? 关于ios苹果系统的越狱 近距离定位 关于对指定的字段内容修改,求助各位 定时计数器问题(秒表实验) 请问PB9在打印时如何将纸张内容旋转90度输出打印? 一张表中有留言记录也包含回复记录根据留言id来查询回复id的sql语句 你说劳资喷年龄歧视,学历歧视招谁惹谁了?! 难道不是吗?难道天朝里做程序猿这行普遍不是都有30岁危机吗? 更何况35岁以上的大龄屌丝还想靠做程序猿来发财的?!? 我要做的东西是实时采集数据,存储,并能在一个表格中实时显示,实时刷新。 并把这些数据画出实时曲线 雪中找鱼 裹烧茭白 WithEvents关键字的使用问题? 为什么下东西要积分啊啊啊 啊 GridPanel的某一列嵌入 checkbox sql代码查错 2013年3月,成都Qt研讨会半日游 asp.net资源下载的权限控制 新手问一个简单的问题 VC2010添加控件的问题 讯飞语音 如何更改recognizerdialog外观 静态数据成员是不是一定要初始化?如果是这个静态数据成员是数组呢? 关于uC/OS-II在52单片机上移植的问题 求一个所有国家的省市区数据库 HTML奇葩代码 HTC offer 数据采集曲线的绘制 使用Realview MDK uVision4 调试韦东山的SDRAM代码遇到一个问题