Как создать массив ссылок?

У меня есть класс с именем timeOut, который занимается задачами тайм-аута.

Я должен написать скетч, общий для Sonoff basic и Sonoff Dual, то есть у меня может быть 1 задание для Basic и 2 задания для Dual.

Объявление экземпляров выглядит следующим образом:

timeOUT timeOut_SW0("SW0",TIMEOUT_SW0);
timeOUT timeOut_SW0("SW1",TIMEOUT_SW1);

для простоты кода я лучше создам массив ссылок и вызову его с помощью цикла for:

timeOUT TO[]={timeOut_SW0,timeOut_SW1};

правильно ли называть его ссылкой?

, 👍1

Обсуждение

несколько вопросов назад я ответил на аналогичный вопрос с примером https://arduinoprosto.ru/q/67170/hardwareserial-indexing-array, @Juraj

это школьное задание?, @jsotola

@jsotola Нет, это не так, @Guy . D


1 ответ


Лучший ответ:

3

Вы не можете. Язык C++ не поддерживает массивы ссылки. У вас есть выбор: создать массив объекты:

timeOUT TO[] = {timeOUT("SW0",TIMEOUT_SW0), timeOUT("SW1",TIMEOUT_SW1);}

или массив указателей:

timeOUT *TO[] = { &timeOut_SW0, &timeOut_SW1 };
,

timeout_Switch:243:34: ошибка: запрос на член 'remain' в 'TO[i]', который имеет тип указателя 'timeOUT*' (может быть, вы хотели использовать '->'?) если(TO[i].remain()>0) { ^, @Guy . D

Я проголосовал за этот ответ и собираюсь удалить свой, так как он неправильный., @Michel Keijzers

Я выбрал 2-й вариант, который вы предложили, @Guy . D