inline int16_t operator*(int16_t p) { return p; } // тут не уверен
inline int16_t begin() const noexcept { return pinMin; }
inline int16_t end() const noexcept { return pinMax + 1; }
private:
int16_t pinMin = -1;
int16_t pinMax = -1;
}
Когда пытаюсь вызвать
Bus b;
for (int16_t p: b) {
// ...
}
Получаю ошибку:
main.cpp:199:27: error: indirection requires pointer operand ('int' invalid)
main.cpp:199:29: note: in implicit call to 'operator*' for iterator of type 'Bus'
bus.h:13:20: note: selected 'begin' function with iterator type 'int16_t' (aka 'short')
Как сделать что бы работал?
begin и end должны возвращать указатели
Не то что бы указатели, просто унарный * на них должен работать
Тебе нужно из begin/end возвращать какую-то обёртку, у которой *val вернет int16_t.
Смотри это https://en.cppreference.com/w/cpp/named_req/InputIterator
Обсуждают сегодня