Я пытаюсь создать калькулятор скорости и времени, который является настолько эффективным, насколько это возможно, и хотел бы ссылаться на вызов функции с использованием указателя, который изменяется в соответствии с вводом но я не уверен, как это сделать. Я пробовал много разных вещей:Вызов функции без явного обращения к ней, который изменяется в соответствии с вводом
Моей лучшую попытку:
// Inside class Math
double calcSpeed(double distance, double time); // These functions return a double value of the formula (non static)
double calcDistance(double speed, double time);
double calcTime(double speed, double distance);
// Inside Main
typedef double (Math::*FuncChosen)(double first, double second);
FuncChosen p = &Math::calcSpeed; // This changes according to input to different functions in Math class with same parameter types and return types
p(1, 2); // Not a function, how can I non explicitly call the function?
Есть ли способ, чтобы вызвать эту функцию без явной со ссылки на него с помощью указателей или иным образом. Как вызов функции из указателя, который изменяется в соответствии с вводом? Я не знаю, с чего начать, и что использовать, поскольку все, что я пытаюсь, является незаконным. Я в основном хочу выбрать функцию во время выполнения без использования нескольких ifs и, таким образом, избежать повторения. (Я нашел человек с похожими проблемами, но не нашел эффективный способ сделать это для моей цели.)
Спасибо заранее,
И, да, я новичок в C++ и не сделал много с указателями/ссылками и памятью.
Edit: Для справки, законченный, полный code после коррекции - компилируемых
Почему бы не сделать функции в классе Math статические, или их нет в классе вообще? (Они все еще могут находиться в пространстве имен) –
Wow, я продолжаю получать const и статические смущения. Думаю, я, наверное, мог бы сделать их статичными, но я думаю, я думал, что должен все это знать. Думаю, оставляя их не статическими, у меня больше гибкости? Кроме того, это был в основном проект, включающий несколько разных идей, которые я узнал, поэтому я хотел поместить его в отдельный класс частично по этой причине, а также выглядеть немного чище. tl; dr: Возможно, я мог бы сделать одну из этих вещей, но в какой-то момент мне все равно придется это выяснить. – exitcode
Единственное, что нужно математике, это поток строк, но я не уверен, для чего он используется. Сделайте Math пространство имен и удалите поток. –