[英]How do I call a parameterless function pointer from within a class?
這是我上一篇文章中擴展的新問題: 如何在此類中使用函數指針?
我班有3名成員:
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_filled()
中不會調用draw()
draw_filled()
。 因為draw_ptr
是無參數的,所以我幾乎可以肯定,它只是將地址返回給函數而已。 但是,我想打電話給這個地址。
使用draw_ptr()
不起作用,因為出現錯誤:
錯誤C2064:術語未求值為帶有0個參數的函數
因此,我將其保留為draw_ptr
。
我打給draw_ptr
錯了嗎?
void draw() {
(this->*(this->draw_ptr))();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.