收录日期:2018/10/23 13:41:01 时间: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;
}

为什么?CRichEditCtrl控件与读写文件的问题。 请问各位高手,谁知道如何通过vc访问office环境下的宏,包括读取和修改功能 关于全文本索引 找棋类游戏项目合作投资开发 散分,全部分给第五个回复的人,重复有效... 关于仓库管理信息系统的调研报告!! 现在开始抢分-------------看谁抢的过任我行跟小明 让我头疼的问题,来者有分,不够另外开贴!!!! 醒目:目睹帅哥是怎样被抽死的(ZT) 散分,全部分给第十个回复的人,重复有效... 小弟初学socket编程,而且是在SDK下作的,对socket有些不解 急救!!!!!关于WIN2000下USB2.0的问题 有问题,斑竹进来看一下! 现在开始抢分-------------看谁抢的过任我行跟小明 现在开始抢分-------------看谁抢的过任我行跟小明 +++++++++又一个分组问题+++++++++++ StringBuffer使用最后用不用清? 关于XMLNS的dtd定义 关于如何将dll文件注册到系统中。 SQL Plus 的使用 散分,全部分给第15个回复的人,重复有效... 关于如何将dll文件注册到系统中。 如何为sqlplus加上帮助系统 请教一个关于论坛版本的问题 vb和excel数据库的问题? 大虾们,帮帮忙!!! 散分,全部分给第20个回复的人,重复有效... 怎样能得到行号 如何向自身程序写入数据??????????????????????//急!!!!! 我靠,相同内容的贴子数超过四个视为刷屏,会被扣性俗分的,哈哈