使用构造函数赋值却显示必须是可修改的左值?

我的头文件:

class Golf
{
private:
    static const int Len = 40;
    char fullname[Len];
    int handicap;
public:
    Golf(const char *fn = "None",int hc = 0);
    const Golf & setgolf(const char *fn, int hc);
    void handicap(int hc);
    void show() const;
    ~Golf();
};

我的源文件中的构造函数:

Golf::Golf(const char *fn, int hc) 
{
    strcpy(fullname,fn);
    handicap = hc;
}

其中handicap显示必须是可修改的左值,看了一个小时愣是没发现问题在哪,大家指点一下呗,谢谢。

int handicap;
已经是变量了
void handicap(int hc);
又作为函数名
自然错了
handicap = hc;
这里的handicap被当作是函数指针了,而不是那个int