2010-10-06 129 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

相关问题