Я думал, что смысл итераторов в том, что они были их базовым типом?

Catachan спросил: 13 октября 2017 в 07:02 в: c++

У меня есть следующее

#include "stdafx.h"
#include <vector>
#include <iostream>
#include <algorithm>enum EMode
{
     a
    ,b
    ,c
};void doTheThing(const EMode m)
{
    std::cout << "Found mode " << m << std::endl;
}int _tmain(int argc, _TCHAR* argv[])
{
    std::vector<EMode> modeList;    modeList.push_back(EMode::a);
    modeList.push_back(EMode::c);    const auto mode = find_if(modeList.cbegin(), modeList.cend(), [](const EMode m)
    {
        return c == m;
    });    if(modeList.end() != mode)
    {
        doTheThing(mode);
    }
    return 0; 
}

Проблема в том, что этот код не будет компилироваться.

Я получаю сообщение об ошибке при вызове doTheThing (mode);

Ошибка:

не может преобразовать параметр 1 из 'std :: _ Vector_const_iterator < _Myvec >' в 'const EMode'

Я в растерянности, потому что в моем режиме знаний должен быть векторный итератор, который должен преобразовываться в EMode, когда я пытаюсь использовать его для вызова doTheThing (mode);

Чего мне не хватает?

0 ответов