如何从类中调用无参数函数指针

How do I call a parameterless function pointer from within a class?

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

这是我上一篇文章中的一个扩展的新问题:如何在此类中使用函数指针?

我的班级里有三个成员:

void (X2D::Graphics::OpenGL::Circle::*draw_ptr)(void);
void draw_filled();
void draw_outlined();

此方法显示如何分配它们:

void Circle::fill(const bool fill)
{
    m_fill = fill;
    if (fill)
        draw_ptr = &Circle::draw_filled;
    else
        draw_ptr = &Circle::draw_outlined;
} 

因此,draw_ptr函数指针指向 either draw_filled()draw_outlined()

在同一类中,我有以下方法:

void draw() { this->draw_ptr; }

但是,我在draw_filled()中放置了一个调试点,这是它应该调用的位置,并且调用draw()不会进入draw_filled()。因为draw_ptr是无参数的,所以我几乎可以肯定它除了将地址返回给函数之外什么都不做。但是,我想打电话给这个地址中的内容。

使用draw_ptr()不起作用,因为我收到错误:

错误 C2064:术语的计算结果不为 0 个参数的函数

所以,我把它留作draw_ptr.

我叫错draw_ptr了吗?

void draw() {
  (this->*(this->draw_ptr))();
}