Как создать массив ссылок?
У меня есть класс с именем 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};
правильно ли называть его ссылкой?
@Guy . D, 👍1
Обсуждение1 ответ
Лучший ответ:
Вы не можете. Язык 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
- Возможно ли иметь массив массивов int?
- Ошибка: invalid application of 'sizeof' to incomplete type 'int []' при попытке вычислить размер массива в библиотеке
- Инициализация массива структур
- Невозможно создать массив типа const char*
- Работает ли конструкция int array[100] = {0} на Arduino?
- Массив динамического размера в качестве члена класса
- Длина константного массива uint8_t*
- Получение шестнадцатеричных данных с терминала
несколько вопросов назад я ответил на аналогичный вопрос с примером https://arduinoprosto.ru/q/67170/hardwareserial-indexing-array, @Juraj
это школьное задание?, @jsotola
@jsotola Нет, это не так, @Guy . D