Конструктор со списком инициализаторов для std::mapC++

Программы на C++. Форум разработчиков
Anonymous
Конструктор со списком инициализаторов для std::map

Сообщение Anonymous »

Следуя совету не расширять контейнеры std из этого вопроса, я создаю свой собственный тип и использую std::map в качестве атрибута класса.
Я повторюсь -создание функций открытого интерфейса, которые я хочу, из std::map, пересылка их в атрибут класса.
Как мне указать конструктор, который принимает список инициализаторов в качестве параметра? Я использую map.
Первая попытка использования инициализатора_list
> :< /p>
class IdParentingMap
{
public:
using DataMap = std::map;
using DataMapIt = DataMap::iterator;
using DataMapConstIt = DataMap::const_iterator;

IdParentingMap();
IdParentingMap(std::initializer_list initList);

DataMapConstIt findParentIt(const int id) const;

/** Forwards from std::map **/

std::size_t size() const;
DataMapIt end();
DataMapConstIt end() const;

private:
DataMap data;
};

IdParentingMap::IdParentingMap(initializer_list initList)
: data(initList)
{
}

дает мне (от компилятора):
In constructor 'IdParentingMap::IdParentingMap(std::initializer_list)':
:27:5: error: no matching function for call to 'std::map::map(std::initializer_list&)'
27 | : data(initList)
| ^~~~~~~~~~~~~~

В файле, включенном из /opt/co
Вторая попытка использования инициализатора_list> initList)
: data(initList)
{
}

дает мне (от компилятора):
In constructor 'IdParentingMap::IdParentingMap(std::initializer_list)':
error: no matching function for call to 'std::map::map(std::initializer_list&)'
27 | : data(initList)
| ^~~~~~~~~~~~~~


Подробнее здесь: https://stackoverflow.com/questions/786 ... for-stdmap

Вернуться в «C++»