关于方括号重载的有关问题

关于方括号重载的问题
我有一个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);
}