Can I avoid an ambiguity, when I declare a fixed length vector in class?

后端 未结 2 1226
再見小時候
再見小時候 2021-01-27 03:20

I want to declare a vector of 2 elements as a class member. But next code generates an error:

class A {
private:
   std::vector v (2);
   ...
}


        
相关标签:
2条回答
  • 2021-01-27 04:05

    You can safely use this syntax:

    std::vector<int> v = std::vector<int>(2);
    

    Alternatively, use brace initialization, but you must be careful: the std::initializer_list<int> constructor will be picked, so to initialize a vector with two value- (therefore zero-) initialized ints you need

    std::vector<int> v{0, 0};
    
    0 讨论(0)
  • 2021-01-27 04:16

    An in-class initialiser has to use braces or the equals sign; so this could be

    std::vector<int> v = std::vector<int>(2);
    

    or

    std::vector<int> v {0,0};  // Careful! not {2}
    

    Alternatively, you could use old-school initialisation in the constructor(s):

    A() : v(2) {}
    
    0 讨论(0)
提交回复
热议问题