Возможно ли, чтобы функция возвращала строку ИЛИ число, в зависимости от адреса
Ну, я пытаюсь использовать дисплей HMI, и этот HMI хранит данные в отдельных адресах. Например, целые числа addr. находится в диапазоне от 0x80000 до 0x9ffff, а также для строки addr находится в диапазоне от 0 до 0x1ffff.
На этом этапе я хочу сделать функцию, которая возвращает целое число, если addr-это целое число addr, ИЛИ она вернет строку, если addr-это строка addr. возможно ли сделать два типа возвращаемого типа для метода.
Я определю целое число или строку из значения addr следующим образом:
???? HMT_SendCMD_ReadVPN16(INT32U Addr)
if((Addr > 0x00080000) || (Addr < 0x0009FFFF))
{
return int (); // здесь вызывается функция, и она вернет целое число
}
else if(Addr < 0x0001FFFF)
{
return String (); // здесь вызывается функция, и она вернет строку
}
@mehmet, 👍-1
Обсуждение2 ответа
Лучший ответ:
возможно ли создать два типа возвращаемого типа для метода
Нет. Функции объявляются с одним типом возвращаемого значения. В любом случае, какой смысл возвращать пустую строку?
Вам нужно изменить дизайн.
В любом случае, какой смысл возвращать пустую строку? - ну, там была бы нормальная функция, такая как строка abc(); Я добавил символ . в любом случае, если бог ардуино скажет "нет", все кончено. большое спасибо :), @mehmet
Если бы задача состояла в том,чтобы хранить что-то другое по данному адресу,
или, если вы хотите вернуть строковое представление целого числа,
возможно, вы сможете это сделать, но комментарий Майенко и ответ Ника, предлагающие другой подход, лучше.
- Как отправить данные ads1115 через spi на master arduino
- Как улучшить этот Код? (или как передать строку Char в функцию, чтобы она вела себя как переменная)
- Случайный без параметров
- Запуск команд из строки
- Как использовать SPI на Arduino?
- Очень простая операция Arduino Uno Serial.readString()
- Библиотека DHT.h не импортируется
- Светодиоды: разница между общим анодом и общим катодом
Есть способы сделать это с помощью объектов, но это действительно грязно и запутанно и действительно не стоит усилий. Проще иметь просто две функции, по одной для каждого типа., @Majenko
Переместите свою логику в новую функцию, которая работает с любым из них. Затем определите 2 разные функции с одинаковым именем и разными аргументами по мере необходимости. они могут быть вызваны автоматически с помощью магии, и C++ определит, какой из них вам нужен. Затем вы вызываете свою логику изнутри каждой из оболочек, чтобы вам не пришлось кодировать полную логику дважды., @dandavis