当我在课堂上声明一个固定长度的矢量时,我可以避免歧义吗?

use*_*567 1 c++ vector ambiguity

我想声明一个2元素的向量作为类成员.但下一代码会生成错误:

class A {
private:
   std::vector<int> v (2);
   ...
}
Run Code Online (Sandbox Code Playgroud)

编译器curses"2"是常量.据我所知,问题是,出现歧义,因为编译器将向量声明的字符串解析为函数声明(函数,以"2"作为参数并返回int的向量).

问题:我可以避免这种歧义吗?我怎样才能做到这一点?

PS:在类之外,这个向量声明被正确解析.

Mik*_*our 7

一个类内的初始化器必须使用大括号或等号; 所以这可能是

std::vector<int> v = std::vector<int>(2);
Run Code Online (Sandbox Code Playgroud)

要么

std::vector<int> v {0,0};  // Careful! not {2}
Run Code Online (Sandbox Code Playgroud)

或者,您可以在构造函数中使用旧式初始化:

A() : v(2) {}
Run Code Online (Sandbox Code Playgroud)