![]() |
1
8
被看作是一个函数声明。如果您确实需要此代码,请使用:
|
![]() |
2
10
您在定义中忘记了变量名:
您的代码混淆了编译器,因为在语法上它无法将其与函数声明(返回
解决方案是在
|
![]() |
3
1
只是为了让它清楚地知道发生了什么。看看这个例子
它将输出什么?好吧,它会输出
当这种情况出现时,如果在语句中使用了函数样式转换,并且它看起来也像声明,编译器将始终将其作为声明。当它不能在语法上成为一个声明时(编译器将查看整行来确定),它将被视为一个表达式。因此,我们分配给内部
现在,你的情况正是如此。您试图(不小心)声明一个名为
然后,编译器继续抱怨一个未声明的默认构造函数,因为静态(正如它假定的那样)是默认构造的。但是即使您有一个x的默认构造函数,它当然仍然是错误的,因为两者都不是
你可以做到 不 做几件事就像一个宣言。首先,您可以削减整个表达式,使其不再像声明。或者只需将类型转换为。其他答案中提到了这两种消除歧义的方法:
当您试图实际声明一个对象时,有一个相似但明显的歧义。看看这个例子:
因为
|
![]() |
4
0
您应该将对象声明为
代码中有错误。 |
![]() |
5
0
这两行中的任何一行对我都有效:
尼尔·巴特沃斯指出,
|
![]() |
6
0
当然,你可以这样做:
这将更易于阅读,并且基本上具有相同的效果。 |
![]() |
KiraHoneybee · 具有构造函数参数的模板化类 3 年前 |
![]() |
nick2225 · 隐式调用复制构造函数? 3 年前 |
![]() |
nohaga · 为什么在本例中p3需要默认构造函数? 3 年前 |
![]() |
Aadil Hoda · 为什么类类型的成员需要初始化? 3 年前 |
![]() |
EloiGG · 具有任意类型的变量的可数的C++函数 3 年前 |