问题标签 [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 回答
367 浏览

c++ - 为什么没有为语句“A x(A())”调用 A 的构造函数?

这是关于 C++ 的一个非常基本的问题。为什么不为语句“A x(A())”调用构造函数?

在下面的代码中——我使用 g++ 4.8.2 运行——构造函数(以及析构函数)只被调用一次。x这可能是由于优化,但我对typeid 报告的类型感到好奇,即“A(A (*)())”。

0 投票
2 回答
211 浏览

c++ - C++ 复制构造函数失败

我查看了作为 Stackoverflow 认为可能已经有答案的问题提出的各种选项,但我没有看到任何接近的问题。

示例代码:

这是来自 VS 2010 的 MSVC。 test2 的创建可以正确编译,但对其成员的访问失败,声称 test2 没有类类型。

据我所见,一切都是正确的,复制构造函数采用 const 引用,因此它应该可以与正在使用的临时对象一起正常工作。

那么错误的原因是什么?

0 投票
1 回答
48 浏览

c++ - 尝试在模板类中使用模板对象时出现问题

考虑以下类定义......

节点

链表

主要的

编译时会抛出以下错误...

我对使用模板非常缺乏经验,因此将不胜感激。

0 投票
0 回答
42 浏览

c++ - 类的构造创建了意外的函数指针

我在帖子底部有以下代码。问题是:虽然我希望在所有情况下都有 MyBar 的实例,但在某些情况下,已解析的类型是函数指针。

该代码使用 gcc 4.8.4 和 nvcc(7.0 和 7.5)编译并显示相同的行为。

标准中有什么可以解释这里发生了什么吗?MyBar myBar1()似乎创建了一个函数指针,而不是我期望的默认构造实例。但即便如此,为什么案例 4 会创建一个函数指针?我想创建一个实例,将它传递给绑定到 const-ref 的 Bars ctor。它也应该能够绑定到 r-value-ref 而不是它的 r-value。还是我错过了什么?

0 投票
1 回答
319 浏览

c++ - 在构造函数中将 std::string 转换为 QString

我不明白为什么std::string在将它传递给构造函数时转换为 QString 。这是一个小例子:

编辑:

0 投票
1 回答
79 浏览

c++ - 将函数声明转换为变量定义的简单技巧

我知道以下语句被解释为函数声明而不是变量定义

有什么简单的技巧可以把它变成我想要的单行变量定义吗?我不太喜欢文案

0 投票
2 回答
232 浏览

c++ - 仿函数/函数对象的 is_function 类型特征

考虑以下代码:

输出是false

这并不奇怪,因为仿函数Bar不符合函数类型§8.3.5 Functions [dcl.fct]的条件。

现在考虑以下代码:

注意后面的括号Bar。输出是true

如何Bar()限定为函数类型?

我的猜测是这是最令人烦恼的解析的情况,但是既然它在模板参数列表中,怎么可能呢?

0 投票
2 回答
1220 浏览

c++ - Visual Studio C++ 编译器奇怪的行为

我只是想知道为什么这段代码可以在Visual Studio中正确编译(并且没有警告) 。也许结果与GCCClang相同,但不幸的是我现在无法测试它们。

0 投票
1 回答
116 浏览

c++ - C++ 中链表代码中未解决的外部错误

我的实现代码有问题,你能帮我正确运行这段代码吗?

该代码必须插入一个新客户并显示所有客户..

我收到以下错误:

1>Source.obj : 错误 LNK2019: 函数 _main 1>c:\users\mmm\documents\visual studio 中引用的未解析的外部符号“class waitinglist __cdecl mylist(void)”(?mylist@@YA?AVwaitinglist@@XZ) 2012\Projects\ConsoleApplication141\Debug\ConsoleApplication141.exe:致命错误 LNK1120:1 个未解决的外部

这是Header.h

这是Source.cppmain

0 投票
1 回答
94 浏览

c++ - 如何在 C++03 中对模板类型的对象进行值初始化

假设我有一个函数模板并且想要声明一个值初始化的对象:

我可以做吗?

  • T x;原始类型失败,因为它使它们未初始化,
  • T x();由于最烦人的解析而失败
  • T x = T();需要一个复制构造函数并且不需要编译器删除副本
  • T x{};失败是因为我们没有使用 C++11。

我希望我是个白痴,忽略了一些明显的事情,但我没有看到答案。