gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:02:38 24 4
gpt4 key购买 nike

我有一个带有构造函数的简单类,它接受std::map。我想用一对 braze-enclosed 初始化列表来初始化这个类。这是我尝试过的:

//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
}

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

最佳答案

信不信由你,您还少了一对花括号。这应该有效:

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

关于c++ - 使用构造函数初始化您的类,该构造函数将 std::map 作为带有大括号括起来的初始化程序的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55639638/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com