Я пытаюсь передать функцию-член в качестве аргумента, используя pointer-to-member-function
. Я уже видел некоторые ссылки вроде этого here, но я не мог решить проблему.Передача функции-члена в качестве аргументов с использованием функции-указателя на C++
Класс Foo имеет две функции-члены. Мне нужно передать функцию addition
в качестве аргумента функции NewOper
. Это мой код. Я могу правильно использовать указатель для вызова функции addition
, но он дает мне ошибку, когда я пытаюсь передать ее в качестве аргумента функции NewOper
. Я ценю это, если вы скажете мне, как я могу это исправить. (Последние две строки вызывают ошибку)
#include <iostream>
using namespace std;
class Foo{
public:
int addition(int a, int b)
{
return (a + b);
}
int NewOper(int x, int y, int(*fnc2call)(int, int))
{
int r;
r = (*fnc2call)(x, y);
return (r);
}
};
int main()
{
int m,n, k, l;
int (Foo::*fptr) (int, int) = &Foo::addition;
Foo obj;
m=(obj.*fptr)(1,2);
Foo* p = &obj;
n=(p->*fptr)(3,4);
cout << m << endl;
cout << n << endl;
//**********************
int (Foo::*fptr) (int, int, int(*fnc2call)) = &Foo::NewOper;
k = (obj.*fptr)(1, 2, addition);
}
Это выглядит очень похоже: http://stackoverflow.com/questions/130322/how-do-you-pass-a-member-function-pointer Я не Конечно, это дубликат. –
'Foo :: addition' должно быть' static' для передачи в 'NewOper'. – Jarod42
На какой вопрос ваш вопрос? Почему вы прокомментировали последние 2 строки? – Barmar