G ++编译器不能用同名来区分变量和函数吗?

Ter*_* Li 2 c++ compiler-construction naming-conventions method-names

可能重复:
类方法和具有相同名称的变量,C++中的编译错误不在Java中?

当我的类成员名称和成员函数名称相同时,G ++编译器会抱怨.似乎每当变量名称恰好与函数名称相同时,编译器就会抱怨.

在Java中,情况并非如此.我只是想知道为什么G ++编译器无法区分变量名和函数名,因为函数名总是带有一对括号.

Jam*_*lis 8

struct Callable
{
    void operator()() const { }
};

struct Test
{
    void Call() { }
    Callable Call;
};

int main()
{
    Test x;
    x.Call(); // To which 'Call' does this refer?
}
Run Code Online (Sandbox Code Playgroud)