Возможно ли, чтобы функция возвращала строку ИЛИ число, в зависимости от адреса

Ну, я пытаюсь использовать дисплей 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 (); // здесь вызывается функция, и она вернет строку
    }

, 👍-1

Обсуждение

Есть способы сделать это с помощью объектов, но это действительно грязно и запутанно и действительно не стоит усилий. Проще иметь просто две функции, по одной для каждого типа., @Majenko

Переместите свою логику в новую функцию, которая работает с любым из них. Затем определите 2 разные функции с одинаковым именем и разными аргументами по мере необходимости. они могут быть вызваны автоматически с помощью магии, и C++ определит, какой из них вам нужен. Затем вы вызываете свою логику изнутри каждой из оболочек, чтобы вам не пришлось кодировать полную логику дважды., @dandavis


2 ответа


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

3

возможно ли создать два типа возвращаемого типа для метода

Нет. Функции объявляются с одним типом возвращаемого значения. В любом случае, какой смысл возвращать пустую строку?

Вам нужно изменить дизайн.

,

В любом случае, какой смысл возвращать пустую строку? - ну, там была бы нормальная функция, такая как строка abc(); Я добавил символ . в любом случае, если бог ардуино скажет "нет", все кончено. большое спасибо :), @mehmet


0

Если бы задача состояла в том,чтобы хранить что-то другое по данному адресу,

или, если вы хотите вернуть строковое представление целого числа,

возможно, вы сможете это сделать, но комментарий Майенко и ответ Ника, предлагающие другой подход, лучше.

,