Как инициализировать std :: map в разделе инициализации базового члена в C ++?

По сути, у меня есть карта в качестве переменной-члена в классе, которую я хотел бы инициализировать с помощью пары ключ-значение в разделе инициализации базового члена.

Parser::Parser()
:operations() //the dictionary
{

}

Я не совсем уверен, что синтаксис для этого. Я думал что-то вроде:

Parser::Parser()
:operations({"hello","goodbye"},{"foo","bar"})
{

}

но это не работает

Есть идеи?

1

Решение

Вам не хватает списка инициализатора:

Parser::Parser()
:operations({{"hello","goodbye"},{"foo","bar"}})
{

}

Это также должно работать:

Parser::Parser()
:operations{{"hello","goodbye"},{"foo","bar"}}
{

}

демонстрация Вот.

редактироватьэто альтернатива, которая должна работать под VS:

struct a {
std::map<int, int> x;

static std::map<int, int> make_map() {
std::map<int, int> some_map = {{1,2}, {3,4}};
return some_map;
}

a() : x(make_map()) {}
};
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]