【发布时间】:2021-06-17 23:15:20
【问题描述】:
当我使用列表的显式声明 { "C++", "C", "PHP" } 时,出现了这个奇怪的错误:
[main.cpp 2021-03-20 22:02:08.850]
,,main.cpp: In function `int main()':
main.cpp:22: error: syntax error before `{' token
代码如下:
#include <iostream>
#include <list>
using std::list;
using std::string;
class Person {
public:
string name;
list <string> languages;
};
int main() {
Person p1;
p1.name = "Joe";
p1.languages = { "C++", "C", "PHP" };
return 0;
}
【问题讨论】:
-
您的编译器使用了哪些选项?默认可能仍然是 C++ 标准的相当旧的版本?
-
这不是我所问问题的完全答案,也不完整(它没有提到正在使用哪个版本的编译器)。您可能想尝试使用
-std=c++11(或-std=c++0x,如果这不起作用)。 -
我对mingw了解不多。我所知道的是它使用gcc 作为编译器。我相信它是用某种形式的 IDE 打包的,但我对此一无所知。您需要查看是否可以在某处启用使用 C++11(或更高版本)(这是
-std=c++11所做的;您的代码使用 C++ 功能std::initializer_list,这在以前的版本中不可用) . -
您确定这是您要编译的代码吗?里面没有22行...
-
然后编辑您的问题,并在您准确编译显示的代码时遇到错误。没有人愿意花时间在一个拼写错误或没有显示的问题上。