抽象函数指针不起作用

时间:2014-02-03 13:11:02

标签: c++ pointers

我有这个代码用于mbed微控制器的GUI设计:

这是我的抽象类Widget.h,它有不同的子类,如Button或Fader(不确定我是否可以在抽象类中以这种方式添加变量,但它会编译。

class Layout; //incomplete type

class Widget {    
    public:
        virtual void display(int x, int y) = 0; //pure virtual function for displaying the object
        virtual bool touchEvent(int x, int y)= 0;  //pure virtual function for checking if the touch does something for the widget
        void (*function)();
        Layout *layout;
};

现在我想调用我创建的函数指针

 if(currentWidget->function != NULL){
                    (currentWidget->function)(); 
 }

但程序在这里停止。我也想像这样更改activeLayout,但它也不起作用。

if(currentWidget->layout != NULL){
                    Layout *templayout = currentWidget->layout;
                    activeLayout = templayout;
}

我在这方面的做法是错误的吗?我怎么能解决它?

1 个答案:

答案 0 :(得分:1)

Yoo应该为NULL分配一个function值,例如在构造函数中,以使测试if(currentWidget->layout != NULL)有意义,如果不这样,函数将指向一些垃圾,测试将通过,你将执行垃圾,在最好的情况下导致GPF。 那么,从设计的角度来看,为什么使用原始函数指针?这样的事情应该用多态来处理。