Конструктор со списком инициализаторов для 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)
{
}
дает мне (из компилятора):

В конструкторе
'IdParentingMap::IdParentingMap(std ::initializer_list)': IdParentingMap.cpp:13:5: ошибка: нет соответствующей
функции для вызова 'std::map< int, std::vector

::map(std::initializer_list&)' 13 | : данные(initList)
| ^~~~~~~~~~~~~~


Вторая попытка использования инициализатора_list
>:

Код: Выделить всё

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)
{
}
дает мне (из компилятора):

В конструкторе
'IdParentingMap::IdParentingMap(std ::initializer_list)': IdParentingMap.cpp:13:5: ошибка: нет
соответствующей функции для вызова 'std::map< int, std::vector

::map(std::initializer_list&)' 13 | : data(initList)



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

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