一个简单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,没发现其他错误
------解决方案--------------------
#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自身的问题
------解决方案--------------------