关于容器类map的问题(84个warning,汗死~~~~)

由以下代码引出的问题。用学生姓名作关键字,与Student对象建立映射。重载了两个<<运算符用于输出学生姓名和年龄。VC上可以通过编译,但竟然有84个warning!#i... 由以下代码引出的问题。
用学生姓名作关键字,与Student对象建立映射。重载了两个<<运算符用于输出学生姓名和年龄。VC上可以通过编译,但竟然有84个warning!

#include <iostream>
#include <string>
#include <map>
using namespace std;

class Student
{
public:
Student():itsName("John"),itsAge(18) {}
Student(const string, int );

const string & GetName() const {return itsName;}
int GetAge() const {return itsAge;}
void SetName(const string name) {itsName=name;}
void SetAge(int age) {itsAge=age;}
//friend ostream & operator<<(ostream &,const Student &);
private:
string itsName;
int itsAge;
};

Student::Student(const string name,int age):
itsName(name),itsAge(age)
{}

ostream & operator<<(ostream &theStream,const Student &rhs)
{
theStream<<rhs.GetName()<<endl;
theStream<<rhs.GetAge()<<endl;

return theStream;
}

ostream & operator<<(ostream &theStream,const map<string,Student> &rhs)
{
for(map<string,Student>::const_iterator ci=rhs.begin();
ci !=rhs.end();
ci++)
theStream<<ci->second<<endl;

return theStream;
}

typedef map<string,Student> SchoolClass;

int main()
{
Student Mike("Mike",15);
Student Jane("Jane",13);
Student Cathy("Cathy",18);
Student Bob("Bob",12);
Student Peter("Peter",10);

map<string,Student> ourClass; //这样定义映射有错?
cout<<ourClass.size()<<endl;

ourClass["Mike"]=Mike;
ourClass["Jane"]=Jane;
ourClass["Cathy"]=Cathy;
ourClass["Bob"]=Bob;
cout<<ourClass.size()<<endl;

cout<<ourClass<<endl;

return 0;
}
展开
 我来答
奇妙百货铺
2008-05-03 · TA获得超过1472个赞
知道小有建树答主
回答量:605
采纳率:0%
帮助的人:585万
展开全部
话说,很奇怪,我在dev c++下编译没有任何warning。vc 6.0的话对标准c++支持不是很好,楼主看看能不能用vs2003/vs2005 try一下。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式