返回信息流关键是用string类时,是不是不可以用运算符重载?为什么总是报错?使用的是VC6.0的编译系统.....
这是一条镜像帖。来源:北邮人论坛 / cpp / #7062同步于 2008/5/19
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
关于string类与运算符重载
majun
2008/5/19镜像同步9 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
可以重载啊
【 在 majun (我走我路) 的大作中提到: 】
: 关键是用string类时,是不是不可以用运算符重载?为什么总是报错?使用的是VC6.0的编译系统.....
或者说是用#include<string>及#icnlulde<iostream>头文件格式的,是不是不可以使用函数重载?
【 在 purevirtual 的大作中提到: 】
: 可以重载啊
比如这个程序:
#include<iostream>
#include<string>
using namespace std;
class student
{public:
friend istream&operator>>(istream&,student&);
friend ostream&operator<<(ostream&,student&);
private:
string name;string sex;int score;
};
istream&operator>>(istream&input,student&s)
{cout<<"please input a student's data"<<endl;
input>>s.name>>s.sex>>s.score;
return input;}
ostream&operator<<(ostream&output,student&s)
{output<<"name="<<s.name<<ednl;
output<<"sex="<<s.sex<<endl;
output<<"score="<<s.score<<endl;
return output;}
int main()
{student s1,s2;
cin>>s1>>s2;
cout<<s1<<s2;
return 0;
}
就报错
tring test.cpp
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(13) : error C2248: 'name' : cannot access private member declared in class 'student'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(9) : see declaration of 'name'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(13) : error C2248: 'sex' : cannot access private member declared in class 'student'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(9) : see declaration of 'sex'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(13) : error C2248: 'score' : cannot access private member declared in class 'student'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(9) : see declaration of 'score'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(16) : error C2248: 'name' : cannot access private member declared in class 'student'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(9) : see declaration of 'name'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(16) : error C2065: 'ednl' : undeclared identifier
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(17) : error C2248: 'sex' : cannot access private member declared in class 'student'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(9) : see declaration of 'sex'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(18) : error C2248: 'score' : cannot access private member declared in class 'student'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(9) : see declaration of 'score'
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(22) : error C2593: 'operator >>' is ambiguous
d:\visual c++\vc\msdev98\myprojects\c++ primier 程序\string\string test.cpp(23) : error C2593: 'operator <<' is ambiguous
报这样的错,怎么区分?
【 在 ericyosho 的大作中提到: 】
: 可以使用名字空间进行区分。
你的程序我在gcc里可以运行成功
【 在 majun (我走我路) 的大作中提到: 】
: 比如这个程序:
: #include<iostream>
: #include<string>
: ...................
你的编译器有问题吧
vs下也可以跑成功:
1>正在链接...
1>正在嵌入清单...
1>生成日志保存在“file://c:\Documents and Settings\ywudi\My Documents\Visual Studio 2005\Projects\t\t\Debug\BuildLog.htm”
1>t - 0 个错误,0 个警告
========== 生成: 1 已成功, 0 已失败, 0 最新, 0 已跳过 ==========
【 在 majun (我走我路) 的大作中提到: 】
: 比如这个程序:
: #include<iostream>
: #include<string>
: ...................
不是吧?我用的VC6.0
【 在 purevirtual 的大作中提到: 】
: 你的编译器有问题吧
: vs下也可以跑成功:
: 1>正在链接...
: ...................
那我就不知道了,反正用vs和gcc都没问题
你自己看着办吧?
当然也有可能是你的vc出问题了
【 在 majun (我走我路) 的大作中提到: 】
: 不是吧?我用的VC6.0