Просто интересно, может ли кто-нибудь дать мне какой-нибудь совет относительно того, где я здесь ошибаюсь.Моя программа работает нормально, если я запускаю ее как есть, но как только я заменяю закомментированную строку на строку ниже, я получаю ошибки.Моя цель - использовать закомментированную строку, потому что я хочу создать программу, которая позволяет мне передавать указатель на функцию в качестве аргумента другой функции, но пока мне не повезло.
#include <iostream>
using namespace std;
double arith_op(double left, double right, double (*f)(double, double));
double addition(double left, double right);
double subtraction(double left, double right);
double multiplication(double left, double right);
int main()
{
double left, right;
int choice;
double (*f[3])(double, double) = { addition, subtraction, multiplication };
cout << "Enter 1 for addition, 2 for subtraction, 3 for multiplication "
<< "(-1 to end): " << endl;
cin >> choice;
while (choice != -1) {
cout << "Enter a floating-point number: " << endl;
cin >> left;
cout << "Enter another floating-point number: " << endl;
cin >> right;
// double* result = arith_op(left, right, f[choice - 1](left, right));
double result = f[choice - 1](left, right);
if (choice == 1) {
cout << left << " + " << right << " = " << result;
}
else if (choice == 2) {
cout << left << " - " << right << " = " << result;
}
else {
cout << left << " * " << right << " = " << result;
}
cout << endl;
cout << "Enter 1 for addition, 2 for subtraction, 3 for multiplication "
<< "(-1 to end): " << endl;
cin >> choice;
}
}
double arith_op(double left, double right, double (*f)(double, double))
{
return (*f)(left, right);
}
double addition(double left, double right)
{
return left + right;
}
double subtraction(double left, double right)
{
return left - right;
}
double multiplication(double left, double right)
{
return left * right;
}
Я должен добавить, что моя конечная цель - упаковать функцию arith_op и другие функции в отдельный файл, а затем использовать их, включив их прототипы в 'extern'.Это может быть странным способом решения проблемы - это для задания, а они всегда странные.
Спасибо :)
Wade