我有一个带有构造函数的简单类,它接受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
}但我得到了一个错误。我想我必须实现不同的构造函数才能使用初始化器列表进行初始化,但我不知道如何实现。
发布于 2019-04-12 03:17:43
信不信由你,你又少了一对大括号。这应该是可行的:
X<char, int> y = { { {'a', 5 } } };
^ ^ ^~~~~~~~~
| | initializes map element
| initializes the map
initializes your objecthttps://stackoverflow.com/questions/55639638
复制相似问题