В этом коде я пытаюсь инициализировать объект класса, используя initializer_list пары (int,pair(string,string)), но я получаю сообщение об ошибке при инициализации члена класса map2 типа map(int,pair(string,string)).
Вот мой код
#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;
}





Элементы карты имеют клавиши const.
Изменять
contact(initializer_list<pair<int, pair<string, string>>> m) : map2(m) {}
к
contact(initializer_list<pair<const int, pair<string, string>>> m) : map2(m) {}
Кстати, вы тоже можете отказаться от make_pair():
contact obj
{
{4, {"parul", "agrawal"}},
{5, {"keshav", "agrawal"}},
};