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:在类之外,这个向量声明被正确解析.
一个类内的初始化器必须使用大括号或等号; 所以这可能是
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)