问题标签 [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 投票
1 回答
2426 浏览

c++ - 构造函数不返回可用对象

我的构造函数有问题,它没有像我预期的那样工作。

如果我尝试像这样初始化我的类,它将起作用并且我得到一个可用的对象:

但是,如果我尝试构建一个像下面这样的类(应该是等效的),结果是非常出乎意料的。编译或运行程序时没有错误消息/警告。但是如果你尝试在某个地方使用这个变量 a 并调用它的方法(例如 a.doSomething()),它就会崩溃。

我在构造函数中放了一些代码来通知我是否使用了它。事实证明,在这种情况下,构造函数内的代码实际上并没有被执行。

所以我想知道为什么会这样?第二次申报违法吗?

编辑:我会发布一些类的代码

0 投票
3 回答
3368 浏览

c++ - 查找模板参数的 typeid

构造函数定义中的 print 语句没有被打印出来,是不是构造函数在 main 中调用正确?我知道我在这里遗漏了一些观点,请指出。

0 投票
1 回答
3023 浏览

c++ - 最烦人的解析

我从这里得到了代码。

从它的外观来看,它应该由于以下行而出现编译错误:

但它只有在 return time_keeper.get_time();存在时才会发生。

为什么这条线甚至很重要,编译器会在time_keeper(Timer() )构造上发现歧义。

0 投票
3 回答
211 浏览

c++ - 为什么这不是一个令人烦恼的解析?

基本上这是这个关于最令人烦恼的解析的问题的后续。我可以理解这是由于函数声明和变量定义之间的歧义。

但是在Comeau online,我只是厌倦了以下。

但它编译得很好,没有错误。我查看了标准文档,但无法得出一个推理。

那么,我在这里缺少什么?

0 投票
3 回答
32411 浏览

c++ - 如何检查向量中是否包含值?C++

我有一个向量,我正在尝试对其执行包含函数。我收到某种类型的转换错误,我无法拼凑出一个解决方案。我也想知道我正在做的是否是检查向量是否包含值的适当方法。

这是代码:

0 投票
2 回答
525 浏览

c++ - 为什么允许使用临时对象调用具有非 const 引用作为参数的构造函数?

我在下面有一个示例代码。

在上面的代码中,即使 XYZ 构造函数将参数作为非 const 引用,它也可以正常编译,而 fun 函数无法编译。这是特定于 g++ 编译器还是 c++ 标准必须对此有所说明?

编辑:

g++ -v 给出了这个。

gcc 版本 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)

0 投票
3 回答
168 浏览

c++ - 为什么这段代码可以省略副本?

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

为什么这段代码可以省略 A 的所有副本?

这段代码显然不复制A,并且在 ideone 的 gcc 3.4 下不输出任何内容。

0 投票
2 回答
7010 浏览

c++ - 用 () 创建一个类的实例

ClassName instance()我有一个问题:在 C++ 中创建类的实例时使用什么构造函数?

例子:

谢谢 !

0 投票
4 回答
455 浏览

c++ - C++ - 如果构造函数是私有的,这会做什么?

在下面的代码中,为什么编译器不抱怨 mClass2?

0 投票
4 回答
3056 浏览

c++ - 关于最令人烦恼的解析的一个令人困惑的细节

我的问题是如何将以下行解析为函数声明:

我了解 Most Vexing Parse 的大部分细节,以及为什么第二个临时迭代器可以解释为一个返回迭代器且不带参数的函数类型,但我不明白为什么第一个临时迭代器可以是解释为一种类型。它代表什么类型?我的想法是它会是某种函数类型,但我看不出这个名字是如何cin被使用的。是否声明参数是istream_iterator<int>命名的cin?如果是这样,这是否意味着您可以任意给函数的参数名称加上括号?如果是这样,为什么?