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

c++ - 请求非类类型 c++ 的成员

我正在努力测试这个类中的每个函数,我无法测试将分子和分母分配给不带参数的构造函数的函数这里是我的代码。我收到对“first”中非类类型“Rational”的成员“numerator”的此错误请求

0 投票
2 回答
1230 浏览

c++ - 这个声明如何调用最令人烦恼的解析?

考虑以下程序:

C++1y 模式中的 Clang 认为 MVP 被调用,从而a被解析为函数声明

我了解MVP,但在这种情况下不是:argv[1]显然是一个表达式,并且在它之前没有类型,那么如何将这一行解析为函数声明?

argv[1]是不是在编译器已经选择将行解析为函数声明之后才会发生语义解释,这将消除该行作为对象声明的歧义?或者它是一个 Clang 错误?还是通过对argv [ 1 ]我缺少的令牌的一些解释完全正常?

0 投票
1 回答
67 浏览

c++ - 泛型类型初始化中的歧义

采用以下可以正常工作的简单模板函数:

我已将第一行更改为T tSum(),它没有被编译,因为编译器认为 tSum 是一个函数,不能在 for 循环中的 + 运算符中使用。您能否告诉我以下这些泛型类型的初始化类型之间有什么区别?

  • 类型 var = Type();
  • 类型 var();

int var()考虑到例如两者和int var = int()是相同的,我认为可以替换这些行!

0 投票
1 回答
89 浏览

templates - c++11在函数中定义的类中使用函数模板参数

我对下面的代码有两个问题:

为什么version / * 1 * / 在g++下编译而version / * 2 * / 不行?

为什么这段代码不能在 clang 中编译?

我知道如何解决它。但我想了解为什么它不起作用。

在铿锵声中,我收到以下错误:

我使用 g++ 4.8.1 和 clang 3.4-1。

0 投票
4 回答
4105 浏览

c++ - 默认构造函数 c++

我试图了解默认构造函数(如果您不编写,则由编译器提供)与您自己的默认构造函数是如何工作的。

所以例如我写了这个简单的类:

输出是:

为 A 调用的默认构造函数

为 A 调用的参数构造函数

所以对于最后一个,还有另一个构造函数被调用,我的问题是在这种情况下 n 有哪个和哪个类型?

0 投票
2 回答
137 浏览

c++ - C++ 为什么变量是函数而不是对象?

这个标题可能并不完全准确——它是基于我对正在发生的事情的最佳猜测,我认为它比“有人可以解释这段代码发生了什么吗?”更好。

无论如何,我有这个代码:

所以当我编译它时,标记为“编译错误”的行在 g++ 4.9 中提供了一个错误:

clang++ 3.4.1 提供了类似的错误。

我最好的猜测是它认为“x”是某种返回 Class2 的函数,而不是 Class2 本身,但是......为什么会这样?我认为对 Class1 的调用会返回一些匿名 Class1,这些匿名 Class1 会传递给 Class2 的构造函数。

0 投票
1 回答
961 浏览

c++ - 如何正确使用向量范围构造函数?

我想通过使用其范围构造函数将文本文件中的所有行加载到 avector<string中,然后通过以下方式输出它们cout

尝试编译上述代码时,出现几个错误,例如:

和其他几个...

我想我在这里遗漏了一些明显的东西,有人可以帮忙吗?

0 投票
2 回答
476 浏览

c++ - C++11 构造函数的区别(大括号)

我对 C++ 很陌生,并且观察到以下代码行的行为不同

头文件为

你能解释一下,这三种创建对象的方式有什么区别吗?为什么第二种方式会产生编译器错误?

0 投票
1 回答
167 浏览

c++ - 从 std::vector 继承,编译器错误?(最令人烦恼的解析)

对于看到这个问题的人:看看答案并考虑使用:cdecl

为什么下面的代码会给出编译器错误:

我不明白这段代码有什么问题?

0 投票
3 回答
207 浏览

c++ - 为什么匿名对象有时需要默认构造函数?

如果我编写以下程序,它会按我的预期工作:

但是,如果我编写一个稍微不同的程序,我会得到一个编译错误:

错误是:

prog.cc: In function 'int main()':
prog.cc:10:20: error: no matching function for call to 'Foo::Foo()'

可以在 IDEONE 上看到完整的错误。

为什么第二个程序而不是第一个程序会出现错误?