如何在此类中使用函数指针?

时间:2014-12-29 23:02:24

标签: c++

我有一节课:圆圈。它可以绘制实心圆或圆形圆。基于它的当前设置,我想要一个调用draw_filled()或draw_outlined()的通用draw()方法。

在我的课堂上,我有成员void (*draw)(void);

我有两个私人函数:void draw_filled(); void draw_outlined();

然后,我有以下方法:

void Circle::fill(const bool fill)
{
    m_fill = fill;

    if (fill)
        draw = draw_filled;
    else
        draw = draw_outlined;
}

我在两个绘图分配上都收到错误:

错误C2440:' =' :无法转换为' void(__ thiscall X2D :: GL :: Circle :: *)(void)' to' void(__ cdecl *)(void)' 1 GT;没有可以进行此转换的上下文

通常,我不会在课程中使用函数指针,所以这对我来说是新的。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

从错误消息中可以看出draw是指向函数的通用指针,而不是指向成员函数的指针。抽奖声明应为void (X2D::GL::Circle::*draw)(void),以便draw指向Circle的成员函数。