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

时间:2014-12-29 23:36:14

标签: c++

这是我上一篇文章中的一个扩展新问题: How do I use function pointers within this class?

我班上有三名成员:

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:term不计算为采用0参数的函数

所以,我把它留作draw_ptr

我打电话给draw_ptr错了吗?

1 个答案:

答案 0 :(得分:0)

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