В настоящее время я разрабатываю API, где хочу, чтобы пользователь мог писать такой код:
PowerMeter.forceVoltage(1 mV);
PowerMeter.settlingTime(1 ms);
В настоящее время мы делаем это с помощью таких как:
#define mV *1.0e-03
Это очень удобно для пользователя, чтобы написать свой код, и он также очень читабельен, но, конечно же, имеет и недостатки:
int ms;
Выбросит некоторые ошибки компилятора, которые трудно понять. Поэтому я ищу лучшее решение.
Я попробовал новые С++ 11 литералы, но с этим я мог бы достичь:
long double operator "" _mV(long double value) {
return value * 1e-3;
}
PowerMeter.forceVoltage(1_mV);
В конце API не заботится об устройстве наподобие Volt или second, но принимает только номер, поэтому я не хочу делать никаких проверок, если вы действительно вводите Volts в forceVoltage или нет. Это также должно быть возможно:
PowerMeter.forceVoltage(2 ms);
Любая идея, кроме останова с определениями?