Использование функций обратного вызоваC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Использование функций обратного вызова

Сообщение Anonymous »

Я просматриваю серию руководств, и там есть урок о функциях обратного вызова с использованием простого калькулятора. Я не умею программировать, но понимаю указатели и функции.
В учебнике продемонстрирован простой случай с двумя функциями, принимающими (int, int), и функцией, которая принимает указатели на функции в качестве аргументов, но я решил пойти по-своему и передать массив из переменных double и двух переменных size_t (чтобы отметить начало и конец массива) в качестве аргументов функциям сложения и вычитания.
Я пытался передать всем три аргумента функции и указатель на функцию «операция».
Я ожидал, что программа будет складывать или вычитать все числа в массиве в зависимости от выбора, который делает пользователь.
#include
#include

double add(double[], size_t, size_t);
double subtract(double[], size_t, size_t);

int main()
{
double numbers[] { 1.3, 2.0, 3.5};
size_t start = 0;
size_t end = std::size(numbers);
double(*operation)(double(*), double numbers[], size_t start, size_t end); // a function pointer
char choice = '0'; // a char variable for the choice of operation
double result; // result of the operation for the output

std::cin >> choice; // input

if(choice == '+')
{
result = operation(add, numbers, &start, &end); // passing the addition function as an argument to the operation function
}
if(choice == '-')
{
result = operation(subtract, numbers, &start, &end);
}
std::cout

Подробнее здесь: https://stackoverflow.com/questions/790 ... -functions
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»