问题标签 [most-vexing-parse]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
550 浏览

c++ - C++ 诡异的构造函数

可能重复:
为什么使用空括号调用不带参数的构造函数是错误的?

让我们有这个代码

然后我们有结果:

您能解释一下案例3中发生了什么吗?

0 投票
2 回答
5060 浏览

c++ - 在 C++ 中设置构造函数默认值

可能重复:
为什么使用空括号调用不带参数的构造函数是错误的?
构造对象和调用成员函数

最近我学到了一些关于构造函数的知识,但今天我在为构造函数参数设置默认值时遇到了麻烦。

hpp 文件中的构造函数声明如下所示:

cpp 文件中的定义如下所示:

_faceValue并且_suit是 PlayingCard 的私人成员)当我像这样进行测试时:

如果我注释掉与 card1 相关的代码,card2 可以正常工作。否则我会收到错误: 在“card1”中请求成员“getSuit”,它是非类类型“PlayingCard()”。

这一定意味着它不能识别没有参数的构造函数的使用?我究竟做错了什么?

0 投票
1 回答
2430 浏览

c++ - 带两个参数的向量构造函数被解析为函数声明

考虑这个例子:

编译器在调用时抛出错误std::copy

request for member 'begin' in 'vec', which is of non-class type...

我可以解决这样的错误:

或者通过在每个参数周围加上括号,如下所示:

甚至在 C++11 中使用新的统一初始化:

为什么编译器将示例中的声明解析为函数声明?我知道大多数令人烦恼的解析,但我认为这只发生在空参数列表中。我也想知道为什么第二种解决方法有效。

0 投票
2 回答
721 浏览

c++ - 了解 C++ 编译器

可能重复:
最令人头疼的解析:为什么不 A a(()); 工作?

我遇到了一个简单的 C++ 问题,这让我想重新开始我的 CS 学位,这次尝试学习一些东西。;)

为什么这段代码不能编译:

而另一个编译时没有任何警告

甚至很难找到不同之处(添加了额外的括号:P)。

0 投票
2 回答
134 浏览

c++ - 杂项临时对象 T()

考虑这段代码:

我发现 的值为j1,但这应该是 0,因为int()它是一个值等于 0 的临时值。

此外,运算符的语法newnew typename,但这里T()将是一个临时对象而不是类型名称。

0 投票
4 回答
346 浏览

c++ - 为什么用()声明对象时不调用构造函数?

可能重复:
为什么使用空括号调用不带参数的构造函数是错误的?

语法Matrix m1();有什么作用?

我相信它是一样的Matrix m1;。显然我错了。

0 投票
3 回答
84 浏览

c++ - 从方法堆栈编译中按值返回实例

你能解释为什么这不会编译:

(这是错误:

代码:

但这确实:

0 投票
4 回答
1002 浏览

c++ - C++ 声明一个函数而不是调用一个复杂的构造函数

首先,我知道在 stackoverflow 上已经有类似的问题(这个这个这个),这就是为什么我理解我的问题的原因。不幸的是,这并不能帮助我解决它。

虽然上述问题都与默认的无参数构造函数有关,但我在使用具有默认值的双参数构造函数时遇到了问题- 我试图构造一个调用构造函数的对象,只给出第一个值,并将其解析为函数声明而不是对象。

这是我的一些代码片段(我重命名了类名,因为它们很长且不相关):

类中的所有函数Concrete都实现了,而类中的函数都没有实现Virtual(除了构造函数和析构函数)。

所以,我现在的问题是我想做类似的事情

漂亮、可爱、优雅,但它不起作用(错误与我链接的所有问题相同)。我发现这个论坛教程确实将该问题称为最令人烦恼的 parse,但它的解决方案(在参数周围加上括号)并没有解决问题(在这种情况下它是一长串错误消息,但我可以编辑如果它有帮助,它会在稍后的问题中出现 - 这些都与继承虚函数有关)。

如果我使用带有默认所有参数的构造函数,我已经测试了我的代码,即使我只是单独构造第一个参数:

我可以按原样使用代码,但如果有人能给我一个更优雅的解决方案来解决我现在正在使用的问题,我将不胜感激。


编辑:当我修复最令人烦恼的解析时收到的错误消息

如果我使用带括号的代码:

我的错误是:

为了便于阅读,我重命名了路径并插入了示例文件和类名(与上面相同)。只是一个注释:line 45是有问题的构造函数的定义。另一方面,line 36是线class algoContainer

我也试过这段代码:

然后错误完全不同:

希望这可以帮助。

0 投票
2 回答
171 浏览

c++ - 为什么在这种情况下不调用复制构造函数

说,我有一个A类

现在当我在做

到底发生了什么?

0 投票
4 回答
267 浏览

c++ - C++:“请求 Y 的非类类型 Z 的成员 X”的奇怪出现

以下程序用 g++ 4.6 编译,产生错误

在最后一行:

从代码中包含的工作变体可以看出,在 A 的构造函数的参数周围添加括号可以解决问题。

我已经看到由于将构造函数调用解释为函数声明而导致的一些相关错误,例如在创建一个没有构造函数参数但带有大括号的对象时:

但在我看来

不能解释为函数声明。

有人可以向我解释发生了什么吗?