我有一個結構稱爲富其中包含調用任何方法將其傳遞和返回值的函數。通個人會員和非成員函數指針作爲參數
struct Foo
{
unsigned char fooFunc(unsigned char param, unsigned char(getValueMethod)(const unsigned char))
{
return getValueMethod(param);
}
};
我有一個名爲barFunc方法...
static unsigned char barFunc(const unsigned char paramA)
{
return paramA * 2;
}
...可以很好地傳遞給fooFunc
Foo foo1;
foo1.fooFunc(10, &barFunc);
但我也想fooFunc接受成員函數,像bazFunc ....
struct Baz
{
unsigned char bazFunc(const unsigned char paramB)
{
return paramB * 3;
}
};
...被這樣調用...
Foo foo2;
Baz baz;
foo2.fooFunc(10, ?????);
...但這是無效的。
我的一切都在傳遞成員函數參數的對象體內發現談論知道什麼類的對象來自之前的叫法,這意味着我將不得不創建2個功能,而不是一個。
有沒有一種方法,我還沒有找到,這將只需要1 fooFunc的方法,但將支持非成員和成員函數?
你可以使用C++ 11? – 2014-10-03 10:14:15
不,我不能..... – Beakie 2014-10-03 10:14:30
你想'的boost :: bind'(綁定了'this'指針)和模板可調用。從技術上講,這將導致多個'fooFunc'---方法---成員函數,但只有一個'fooFunc'成員函數模板! –
2014-10-03 10:15:27