1
可能重複:
Cast pointer to member function to normal pointer成員函數指針指向函數指針?
有一些代碼
class TT {
public:
void set();
void par1(int, int);
void par2(double, double);
};
typedef void(*Ptr1)(TT &, int, int);
typedef void(*Ptr2)(TT &, double, double);
void hello(Ptr1, Ptr2){...}
void TT::set()
{
hello(&TT::par1, &TT::par2);
}
和錯誤顯示:
error C2664: 'hello' : cannot convert parameter 1 from 'void (__thiscall TT::*)(int,int)' to 'Ptr1'
請告訴我如何解決這個問題?
函數hello()不需要這個指針。我認爲主要的問題是Ptr1和Ptr2需要一個指向這個的指針。 – user1855182
這些函數不會接受指針,這是調用者的責任。所以hello函數(或者存儲/調用Ptr1/Ptr2的任何人)需要保留'this'指針並將其用作'(this - > * ptr1)(2,3);' –
我認爲perls模型接近於你在暗示什麼......因爲這個對象是作爲第一個參數傳遞的......但是這不是perl。如果你想這樣做你將如何理解它,你將需要製作2個靜態版本的par1/par2,它將'this'指針作爲第一個參數,並用它來調用非靜態版本 –