关于方括号重载的有关问题
关于方括号重载的问题
我有一个Date类,里面有私有成员year、month、day,现在我想通过方括号[]修改Date成员的值:
Date d;
string s;
s="month";
d[s]=11;//修改对象d的成员month为11;
d["year"]=2012;//修改对象d的成员year为2012;
d["day"]=12;//修改对象d的成员day为12;
怎么重载[]实现以上功能?
------解决方案--------------------
我有一个Date类,里面有私有成员year、month、day,现在我想通过方括号[]修改Date成员的值:
Date d;
string s;
s="month";
d[s]=11;//修改对象d的成员month为11;
d["year"]=2012;//修改对象d的成员year为2012;
d["day"]=12;//修改对象d的成员day为12;
怎么重载[]实现以上功能?
------解决方案--------------------
- C/C++ code
#include"stdafx.h" #include<iostream> using namespace std; class Date{ private: int year,month,day; public: Date(int a=2012,int b=5,int c=2):year(a),month(b),day(c) { } int& operator [](const char* strTag) { if (strcmp(strTag,"year")==0) { return year; } else if (strcmp(strTag,"month")==0) { return month; } else if (strcmp(strTag,"day")==0) { return day; } } void output() { printf("YEAR:%d\n",year); printf("Month:%d\n",month); printf("Day:%d\n\n",day); } }; int main(void) { Date d; d.output(); d["year"]=2013; d["month"]=10; d.output(); return(0); }