使用构造函数初始化您的类,该构造函数使用带有括号括起来的初始化程序将std :: map作为参数

阿克马尔·苏尔塔诺夫

我有一个带有构造函数的简单类,它采用std::map我想用一对封闭的初始化器列表初始化该类。这是我尝试过的:

//X.h
#include <map>

template <class key, class value>
class X{
public:
    X(const std::map<key, value>& map) : m_map{map} {}

private:
    typename std::map<key, value> m_map;
};
//main.C

int main() { 
    std::map<char, int> m = {{'a', 5}};
    X<char, int> x = m; //valid
    X<char, int> y = {{'a', 5}}; // error
}

但是我得到一个错误。我想我必须实现不同的构造函数才能使用初始化列表进行初始化,但我不知道该怎么做。

r3mus n0x

信不信由你,你又错过了另一对花括号。这应该工作:

X<char, int> y = { { {'a', 5 } } };
                 ^ ^ ^~~~~~~~~
                 | | initializes map element
                 | initializes the map
                 initializes your object

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章