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

How do I use function pointers within this class?

本文关键字:函数 指针      更新时间:2023-10-16

我有一个类:Circle。它可以绘制填充圆或带轮廓的圆。根据其当前设置,我想要一个调用 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)"转换为"void (__cdecl *)(void)"1> 没有上下文可以进行这种转换

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

从错误消息来看,draw似乎是指向函数的泛型指针,而不是指向成员函数的指针。平局的声明应该是void (X2D::GL::Circle::*draw)(void)的,以便draw指向Circle的成员函数。