我已經看到了很多示例如何使函數指針指向類類型的特定的C++類非靜態成員。不過,我會用這樣的指針,它可以用於任何類型的類。爲了證明這個想法,我寫了一個僞示例:指向任何類類型的非靜態成員函數的C++函數指針
class A
{
public:
A(){} //constructor
void callMe() { /* do something */ }
};
class B
{
public:
B(){} //constructor
void callMe() { /* do something */ }
};
main()
{
A aa;
B bb;
//pseudo part:
generic_method_pointer_type p; //how to define the type of p?
p=HOWTO;//set pointer p to point to A::callMe. How to do?
p(aa); //A::callMe on instance aa gets called
p=HOWTO;//set pointer p to point to B::callMe. How to do?
p(bb); //B::callMe on instance bb gets called
}
這看起來可能嗎?
我知道C++ 11有一些新的技巧,例如std :: function。我在std :: function上做了一些實驗,發現它對於運行在小型微控制器上的實時應用程序太慢了。這就是爲什麼我寧願直接硬編碼指針,這會導致最小的開銷。
謝謝您的建議!
您是否閱讀過您提供的標籤,特別是在成員函數指針下的帖子? –
在網上搜遍了幾個小時。如果你知道一個答案的鏈接,我會很感激。 – TeroK
如果你設置'p =&A :: callMe;'然後做'p(bb);'',你會發生什麼? – aschepler