【发布时间】:2012-01-02 09:35:03
【问题描述】:
可能重复:
Most vexing parse: why doesn't A a(()); work?
Difference between creating object with () or without
有这样的代码:
class MojaKlasa{
public:
MojaKlasa(){}
MojaKlasa(int i){}
void fun(){}
};
int main()
{
MojaKlasa a;
a.fun();
MojaKlasa b(1);
b.fun();
MojaKlasa c(); // initialize with default constructor
//c.fun(); error: request for member ‘fun’ in ‘c’, which is of non-class type ‘MojaKlasa()’
return 0;
}
- 为什么对象 c 有错误?
- 有什么方法可以让它工作?
- MojaKlasa c() 的真正含义是什么 - 它是函数声明吗?
【问题讨论】:
-
在 C++ 中查找 最令人烦恼的解析。
-
这不是最烦人的解析,最烦人的解析是当您尝试在直接初始化的声明中使用临时初始化的值作为初始值设定项时。