Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
6ex
0 / 0 / 0
Регистрация: 26.03.2009
Сообщений: 4
#1

Функция рассчета определенного интеграла. (Передача функции как аргумента) - C++

26.03.2009, 12:02. Просмотров 815. Ответов 4
Метки нет (Все метки)

Есть функция пределенная как:
C++
1
float integrall(float (*argFunc)(float x) , float argTmin, float argTmax, float argStep=1)

Если ей в качестве аргумента передать функцию, которая является членом какого-либо класса,
C++
1
integrall(pSubs->pArCpList[0]->getCp, 100,1000);
то компилятор выдает ошибку:
ошибка: аргумент типа ‘float (ThermalCap:: )(float)’ не соответствует типу ‘float (*)(float)’

Однако если передать глобальную функцию
C++
1
integrall(y, 100,1000);
- всё ОК.

Не подскажите что с этим можно сделать?

PS:
OS - Slackware 12.2
Компилятор: gcc
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2009, 12:02     Функция рассчета определенного интеграла. (Передача функции как аргумента)
Посмотрите здесь:

Передача перегруженной функции как аргумента - C++
Есть 3 метода: static int readInteger() { double temp = readDouble(); int result = temp; if (result != temp) throw new...

Вычисление определенного интеграла функции y(x) численными методами прямоугольников и трапеций - C++
Разработать компьютерную программу вычисления определенного интеграла функции y(x) численными методами прямоугольников и трапеций. В виде...

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

Передача функции в качестве аргумента массив - C++
Помогите пожалуйста! есть некая рекурсивная функция N которая принимает 2 целочисленные переменные и массив; void N(int, int, "?");...

Передача двумерного массива в качестве аргумента функции - C++
Подскажите пожалуйста что не так? (Подчёркивает вот тут вот index(A); аргумент функции). Объясните пожалуйста в чём моя ошибка. ...

Передача объекта в качестве аргумента функции (метода) - C++
На "Интуите" имеем код: class Complex { public: int real; // вещественная часть int imaginary; // мнимая часть ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
26.03.2009, 12:53     Функция рассчета определенного интеграла. (Передача функции как аргумента) #2
попробуй так
C++
1
2
3
4
5
...
#include<functional>
...
   integrall(std::mem_fun(&ThermalCap::getCp), 100,1000);
...
6ex
0 / 0 / 0
Регистрация: 26.03.2009
Сообщений: 4
26.03.2009, 15:40  [ТС]     Функция рассчета определенного интеграла. (Передача функции как аргумента) #3
Цитата Сообщение от Humanitis Посмотреть сообщение
попробуй так
C++
1
2
3
4
5
...
#include<functional>
...
   integrall(std::mem_fun(&ThermalCap::getCp), 100,1000);
...
В данном случае ведь не указывается объект класса, которому принадлежит эта функция...
Humanitis
172 / 164 / 6
Регистрация: 12.01.2009
Сообщений: 430
26.03.2009, 16:06     Функция рассчета определенного интеграла. (Передача функции как аргумента) #4
Хм,ну думаю ты никак не сможешь передать указатель на функцию-член какого-нибудь класса,и чтоб функция сама определила из какого именно объекта она вызывается!
Так что тебе придется в функцию передавать еще и указатель на объект класса.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2009, 23:17     Функция рассчета определенного интеграла. (Передача функции как аргумента)
Еще ссылки по теме:

Передача метода класса в качестве аргумента внешней функции - C++
Столкнулся со следующей проблемой. Пусть у меня есть некая внешняя функция, которая принимает в качестве аргумента указатель на функцию...

Возможна ли передача двумерного массива в качестве аргумента функции по ссылке - C++
Нужно передать двумерный массив в функцию. Понятно, что можно сделать так: void point_to_matrix(double**A,int n_row,int n_column){ ...

Функция в качестве аргумента другой функции по умолчанию - C++
Здравствуйте, поясню немного заголовок. Аргумент функции по умолчанию: void function ( int a=0 ) { ... } Функция в качестве...

Ошибка при передача аргумента: "C2660: calc: функция не принимает 3 аргументов" - C++
Надо передать из void main() в void user(string login) аргумент login,и далее,не упоминав его в user,передать в void calc(string login)....

Функция для рассчета среднего арефмитического введенных чисел - C++
на С++ Создать функцию , которая вводит с клавиатуры последовательность целых чисел и после ввода последнего числа выводит на...

Рекурсивная функция и передача аргументов функции - C++
Помогите пожалуйста!!!!! Пропустила занятие, а разобраться не получается!!!!!!!!А нужно на завтра!!!! Написать рекурсивную функцию...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6ex
0 / 0 / 0
Регистрация: 26.03.2009
Сообщений: 4
26.03.2009, 23:17  [ТС]     Функция рассчета определенного интеграла. (Передача функции как аргумента) #5
Есть решение! Всем спасибо!

Объявление:

C++
1
2
3
4
5
template <class classX> float integrall(classX *argClassObj,float (classX::*argFunc)(float x) , float argTmin, float argTmax, float argStep=1){
...
(argClassObj->*argFunc)((curT+nextT)/2)*(nextT-curT);
...
}


Вызов:
C++
1
integrall(pSubs->pArCpList[0], &ThermalCap::getCp, 100,1000);
Yandex
Объявления
26.03.2009, 23:17     Функция рассчета определенного интеграла. (Передача функции как аргумента)
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru