简体   繁体   English

如何从对的初始化列表构造对象?

[英]How to construct object from initializer list of pairs?

In this code I am trying to initialize class object using initializer_list of pair(int,pair(string,string)), but I am getting error in initializing class member map2 of type map(int,pair(string,string)). 在这段代码中,我尝试使用pair(int,pair(string,string))的initializer_list初始化类对象,但是我在初始化类型map(int,pair(string,string))的类成员map2时遇到错误。

Here is my code 这是我的代码

#include <iostream>
#include <string>
#include <initializer_list>
#include <map>
using namespace std;

class contact{
private:

        map <int,pair<string,string>> map2;

public:

    contact(initializer_list<pair<int,pair<string,string>>> m):map2(m){}
    void display(){
        for (const auto& it:map2){
            cout<<it.first;
        }
    }
};

int main() {
    contact obj{
        make_pair(4,make_pair("parul","agrawal")),
        make_pair(5,make_pair("keshav","agrawal")),
    };

    obj.display();
    return 0;
}

Map elements have const keys. Map元素具有const键。

Change 更改

contact(initializer_list<pair<int, pair<string, string>>> m) : map2(m) {}

to

contact(initializer_list<pair<const int, pair<string, string>>> m) : map2(m) {}

On a side note, you could ditch make_pair() too: 另外,你也可以抛弃make_pair()

contact obj
{
    {4, {"parul", "agrawal"}},
    {5, {"keshav", "agrawal"}},
};

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM