这是我上一篇文章中的一个扩展新问题: 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
错了吗?
答案 0 :(得分:0)
void draw() {
(this->*(this->draw_ptr))();
}