С++: непонятная ошибка C2244

100
08 января 2021, 14:40

Есть класс считывания данные из файла выполненный через итератор:

template <typename IData>
class CExtractorIterator : public std::iterator<std::input_iterator_tag, IData>

чтобы можно было считывать данные через итераторы и for:

for (CExtractor<IExtractorData>::iterator it = extractor.begin(); it != extractor.end(); ++it)

В классе CExtractorIterator есть такой метод:

template <typename IData>
typename CExtractorIterator<IData>::reference
CExtractorIterator<IData>::operator*
() const
{
    return *(IData*)(m_extractor->m_fileBuffer + sizeof(IData) * m_extractor->m_localRecordIndex);
}

Все работало замечательно, пока не применил инструкцию для компиляции /std:c++17, чтобы можно было использовать std::filesystem::create_directory (иначе компилятор упорно не видел

И в результате появилась ошибка:

Severity Code Description Project File Line Suppression State Error C2244 'CExtractorIterator::operator *': unable to match function definition to an existing declaration traffic extractor.h 95

Подскажите в чем ошибка - что-то не понимаю на ночь глядя :(

READ ALSO
C++ from 11 to 17

C++ from 11 to 17

При переходе данный код заголовка перестал работать

146
Что такое AOS, SOA, SOS?

Что такое AOS, SOA, SOS?

Что такое Array of Structure, Structure of Array, Structure of Structure ? Когда использовать?

135
Консольная программа на C++ с использованием UNICODE

Консольная программа на C++ с использованием UNICODE

Проблема в приведении типов при попытке написать код для WinAPIПрограмма простенькая, для вывода таблицы умножения

120