用无参构造结构体对象后无法调用结构体函数?解决办法

用无参构造结构体对象后无法调用结构体函数?声明以下结构体:C/C++ codestruct Foo{Foo(int){}Foo(){}void

用无参构造结构体对象后无法调用结构体函数?
声明以下结构体:

C/C++ code
struct Foo{        Foo(int){}    Foo(){}    void fun(){}};

用如下方式调用报错:
C/C++ code
    Foo a(10);    a.fun();    Foo b();    b.fun();//error: request for member ‘fun’ in ‘b’, which is of non-class type ‘Foo ()()’


改成这样就可以了
C/C++ code
    Foo a(10);    a.fun();    Foo b;    b.fun();


这是为什么呢?
什么原理呢?


[解决办法]
加了括号,里边没内容会被编译器认为是函数声明
C/C++ code
Foo b();