I wanted to call gs_object::createList, but that's not the problem in fact. With the syntaxt gs_object::createList(); it will work fine...

My problem is that I don't understand why what I consider to be a mistake works althrough It shouldn't.

(static_cast<GS_object*>(this))->createList();

Calling this for me is equivalent to do something like :

GS_object * myObj = (gs_object*)myCtServer;
myObj->createList();

but, as createList() is virtual, I should call ct_server::createList() even if the call is made from a gs_object pointer.

So why does it works anyway ?