用无参构造结构体对象后无法调用结构体函数?声明以下结构体: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();
