Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;向量作为类成员vs在函数中_C++_Templates_Syntax - Fatal编程技术网

C++ C++;向量作为类成员vs在函数中

C++ C++;向量作为类成员vs在函数中,c++,templates,syntax,C++,Templates,Syntax,当我在一个函数中使用向量时,我得到一个变量D,它就工作了 vector<int> D(100); 向量D(100); 但是,当我决定将其用作类成员时,我会遇到以下奇怪的错误: error: expected identifier before numeric constant 99 | vector<int> D(100); | ^~~ 错误:数字常量前应包含标识符 99 |矢量D(100); |

当我在一个函数中使用向量时,我得到一个变量D,它就工作了

 vector<int> D(100);
向量D(100);
但是,当我决定将其用作类成员时,我会遇到以下奇怪的错误:

error: expected identifier before numeric constant
   99 |     vector<int> D(100);
      |                   ^~~
错误:数字常量前应包含标识符
99 |矢量D(100);
|                   ^~~
有人能解释一下为什么会出现这种错误吗?
我可以将类中的数组用作
intd[100]
默认成员初始值设定项(自C++11以来),因为它只支持等号初始值设定项(和大括号初始值设定项,与此用例不匹配)

通过默认成员初始值设定项,该初始值设定项是成员声明中包含的大括号或等于初始值设定项,如果从构造函数的成员初始值设定项列表中省略该成员,则使用该初始值设定项

你可以

vector<int> D = vector<int>(100);
vector D=vector(100);
或者使用成员初始化器列表。e、 g

struct x {
    vector<int> D;
    x() : D(100) {}
};
struct x{
载体D;
x():D(100){}
};

我正在使用成员初始值设定项列表。我想知道为什么会有这样的错误。谢谢@它引起歧义;事实上,如果使用括号,大多数编译器都试图将其解释为函数声明。