請參見下面的代碼 - 我想知道如何,或者如果它甚至有可能,寫)A :: DoThisOrThat的身體((簡單?)指向非靜態成員函數的問題
class A
{
void DoThis(void) { // any function body you like... }
void DoThat(void) { // any function body you like... }
void DoThisOrThat(const bool doThis);
};
void A::DoThisOrThat(const bool doThis)
{
void (*pMemberFunction)(void);
pMemberFunction = doThis? &A::DoThis : &A::DoThat;
(*pMemberFunction)(); // member function invoked controlled by parameter
}
此函數的所有三行可能需要重寫才能正確確定成員函數的範圍。正如所寫,我在第二行中得到了一個調用約定衝突,我分配了pMemberFunction。我無法舉出一個簡單的例子來說明這一點 - 所有的例子很容易找到聲明一個成員變量來保存成員函數指針。我能不能創建一個局部變量來做同樣的事情?
指針到成員的語法總是讓我的頭受傷... –