2010-10-06 99 views
1

在下面的類中,這是否意味着onPaintCallback是NULL,還是必須在類構造函數中將其設置爲NULL?我想在給它一個有效的指針之前開始檢查NULL。默認情況下函數指針是否爲NULL?

class AguiWidgetBase 
{ 
    virtual void onPaint(); 
    void (*onPaintCallback)(AguiRectangle clientRect) = 0; 
public: 
    AguiWidgetBase(void); 
    ~AguiWidgetBase(void); 
}; 

回答

6

你有什麼是不合法的。你必須在構造函數初始化:

AguiWidgetBase::AguiWidgetBase() : 
onPaintCallback(0) 
{} 

你可以使用boost::function<void(AguiRectangle)>,這除了是更加靈活,正確地初始化本身爲null。你可以這樣檢查:

if (f) 
    // ... 
+0

好的,謝謝...... :),我猜他們沒有辦法解決這個問題嗎?我想避免有一個函數來初始化函數指針, – jmasterx 2010-10-06 23:04:45

+0

@Milo:你不需要一個。 GMan的代碼相當於你想要的東西... – 2010-10-06 23:09:39

+0

是的,但我有一個回調指針爲每個事件,如果用戶處理事件它設置函數指針 – jmasterx 2010-10-06 23:10:37

相關問題