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

C++ 如何从类中调用无参数函数指针?,c++,C++,这是我上一篇文章中的一个新问题: 我班有三名成员: 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_fill

这是我上一篇文章中的一个新问题:

我班有三名成员:

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\u ptr
函数指针指向
draw\u filled()
draw\u outlined()

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

void draw() { this->draw_ptr; }
但是,我在
draw\u filled()
中放置了一个调试点,它应该在这里调用,并且调用
draw()
不会进入
draw\u filled()
中。因为
draw\u ptr
是无参数的,我几乎可以肯定它除了将地址返回到函数之外什么也不做。不过,我想打电话给这个地址

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

错误C2064:项不计算为具有0个参数的函数

因此,我将其保留为
draw\u ptr


我是否调用了
draw\u ptr
错误?

有比在存储标志的基础上在类的每个实例中存储指针更好的方法。使用
draw()
方法检查
m\u fill
的状态并调用私有
draw\u outline()
draw\u filled()
方法有什么问题吗?谢谢,@wolfPack88。这就成功了:voidDraw(){(This->*(This->draw_ptr))()}为什么要使用函数指针呢?似乎对函子或lambda很有用。当以这种方式使用时,它本质上是函数指针的OO等价物。为什么不使用多态性呢应该足够了
void draw() {
  (this->*(this->draw_ptr))();
}