一个简单C++有关问题,关于重载运算符的

一个简单C++问题,关于重载运算符的
#include<iostream> 
using namespace std; 
class Complex{ 
public: 
friend istream& operator>>(istream&,complex&); 
private: 
double real; 
double imag; 
}; 
istream& operator>>(istream& input,Complex& c) 

input>>c.real>>c.imag; 
return input;} 
VC6.0编译通不过,我都是照着书往上输的,为什么啊

------解决方案--------------------
编译啥错误提示?
------解决方案--------------------
除了声明>>运算符时的Complex写成小写的complex,没发现其他错误
------解决方案--------------------
C/C++ code

#include <iostream>  
using   namespace   std;  
class   Complex
{  
public:  
friend istream& operator>> (istream&,Complex&);  
void out()   // Just for debug
{
  cout<<real<<ends<<imag<<endl;
}
private:  
double   real;  
double   imag;  
};  

istream& operator>> (istream& input,Complex& c)  
{  
input>> c.real>> c.imag;  
return input;
}  

int main()
{
  Complex com;
  cin>>com;
  
  com.out();
    
  return 0;
}
//没什么问题啊。不知你的是怎样的,你这样贴后格式都乱了,没从考究。

------解决方案--------------------
把#include <iostream>
 using namespace std; 
改成:
#include <iostream.h> 
试一试


------解决方案--------------------
lz换个编译器吧,VC6对友元支持的非常不好
VC2005,和gcc都行
------解决方案--------------------
vc6.0对标准支持得不好,扔了吧
------解决方案--------------------
VC6能干的事情,VS2005等也都能干,为什么还死抱着VC6呢?:-)
------解决方案--------------------
vc6.0 中类的友元函数必须在 类里面实现
这个问题以前也害我不浅啊

C/C++ code

#include <iostream>   
using   namespace   std; 
  
class   Complex{   
public:   
    friend istream & operator>> (istream & input,Complex & c)//必须提供在类里面提供实现
    {
        input>> c.real>> c.imag;   
        return   input;
    }
private:   
    double   real;   
    double   imag;   
};   



int main()
{
    Complex a;
    cin >> a;
    return 0;
}

------解决方案--------------------
lz换个编译器就可以了,VC6.0的确存在处理友员方面这样的问题

------解决方案--------------------
方法一:
C/C++ code
#include<iostream>
using namespace std;
class Complex;
istream& operator>> (istream&,Complex&);
class   Complex
{
public:
    friend istream& operator>> (istream&,Complex&);
    void out()
    {
        cout<<real<<' '<<imag<<endl;
    }
private:
    double   real;
    double   imag;
};
istream& operator>>(std::istream& input,Complex& c)  
{  
    input>>c.real>>c.imag;
    return input;
}
int main()
{
    Complex c;
    cin>>c;
    c.out();
    return 0;
}

------解决方案--------------------
将#include<iostream>
using namespace std;

改为
#include<iostream.h>
就可以了,上次保研上机的时候就遇到到这个问题

------解决方案--------------------
同意12楼,这个问题不知道为什么,VC编译friend重载时就是不可以用
using namespace std;
得用<iostream.h>
除非在声明的同时定义,如果定义在外面就会报错,好像是VC自身的问题

------解决方案--------------------