我想構建一個具有作爲參數的方法的成員函數的類。這些方法在繼承類中定義。我建一個小例子:將繼承的方法傳遞給另一個方法
#include <iostream>
struct base
{
base() {}
int number(int (*f)(int))
{
return f(1);
}
};
struct option1 : base
{
int timesTwo(int i){return 2*i;}
option1()
{
std::cout << number(timesTwo);
}
};
struct option2 : base
{
int timesThree(int i){return 3*i;}
int timesFour (int i){return 4*i;}
option2()
{
std::cout << number(timesThree);
}
};
int main()
{
option1 a; //I would expect this to print "2"
}
在功能number
目前的語法是一般的功能,但我不能得到它的任何繼承類的方法工作。
謝謝!如果我應該擔心只是添加'static'的解決方案,你可以擴展嗎?我明白使用'std :: function'更通用,但我相當肯定我不會在任何其他情況下調用該函數。 – RobVerheyen
@RobVerheyen如果你傳遞的函數永遠不會訪問它定義的類中的任何非靜態成員,那麼你可以使它成爲「靜態」而不用擔心。 –