首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用构造函数初始化您的类,该构造函数以std::map为参数,并带有带括号的初始值设定项

使用构造函数初始化您的类,该构造函数以std::map为参数,并带有带括号的初始值设定项
EN

Stack Overflow用户
提问于 2019-04-12 03:12:37
回答 1查看 71关注 0票数 1

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

代码语言:javascript
复制
//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
}

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-12 03:17:43

信不信由你,你又少了一对大括号。这应该是可行的:

代码语言:javascript
复制
X<char, int> y = { { {'a', 5 } } };
                 ^ ^ ^~~~~~~~~
                 | | initializes map element
                 | initializes the map
                 initializes your object
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55639638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档