一个简单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,没发现其他错误
[解决办法]
#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 中类的友元函数必须在 类里面实现
这个问题以前也害我不浅啊
#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的确存在处理友员方面这样的问题
[解决办法]
方法一:
#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自身的问题
------解决方案--------------------
或者试试这样:
#include <iostream> using namespace std; class Complex{ public: private: friend istream& operator> > (istream&,Complex&); double real; double imag; }; istream& operator> > (istream& input,Complex& c) { input> > c.real> > c.imag; return input;}
[解决办法]
vc6.0对friend的支持很差的呀
[解决办法]
友元函数是能够访问类的私有成员变量的。
friend这个关键字也是为此而诞生的。
所以说是vc6的问题了,换vs2005吧,
[解决办法]
受教了!
[解决办法]
你们平时用什么编译器啊 ?????
[解决办法]
vc2005
dev