lundi 29 décembre 2014

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


This is an extended new question from my last post: How do I use function pointers within this class?


I have three members in my class:



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


This method shows how they are assigned:



void Circle::fill(const bool fill)
{
m_fill = fill;

if (fill)
draw_ptr = &Circle::draw_filled;
else
draw_ptr = &Circle::draw_outlined;
}


Thus, the 'draw_ptr' function pointer points to either draw_filled() or draw_outlined().


Within the same class, I have the following method:



void draw() { this->draw_ptr; }


However, I placed a debugging point within draw_filled(), which is where it should be calling, and calling draw() does not go in draw_filled(). Because draw_ptr is parameterless, I'm almost positive it's doing nothing but returning the address to the function. However, I want to call what's in this address.


Using draw_ptr() does not work, because I get the error: error C2064: term does not evaluate to a function taking 0 arguments


Am I calling draw_ptr wrong?





Aucun commentaire:

Enregistrer un commentaire