[ODE] What NearCallback must be like? I cannot place it inside a class!
Alex Brown
abrown28 at gmail.com
Wed Jul 26 22:57:35 MST 2006
you can make it a static member function and pass the PhysicBasic ptr as the
data parameter. It's been a while but I think that's what that parameter is
for.
On 7/27/06, michael kapelko <kornerr at gmail.com> wrote:
>
> I created a basic physics class to incapsulate world creation, callback
> func, etc.
> But when I try to compile main.cpp where I use it, I get:
> main.cpp: In function `void Simulate(bool)':
> main.cpp:251: error: ISO C++ forbids taking the address of a bound member
> function to form a pointer to member function. Say `&PhysicsBasic::
> NearCallback'
> main.cpp:251: error: cannot convert `void (PhysicsBasic::*)(void*,
> dxGeom*,
> dxGeom*)' to `void (*)(void*, dxGeom*, dxGeom*)' for argument `3' to
> `void
> dSpaceCollide(dxSpace*, void*, void (*)(void*, dxGeom*, dxGeom*))'
> make: *** [.obj/main.o] Error 1
>
> I tried both PhysicsBasic phys and PhysicsBasic *phys, but none works.
> Does this function must be outside any class? But how to encapsulate it
> then?
> Thanks.
>
>
> /// Basic physics implementation
>
> #ifndef PHYSICS_BASIC_H
> #define PHYSICS_BASIC_H
>
> #include "../globals.h"
>
> class PhysicsBasic {
> public:
> /// Constructor
> PhysicsBasic ();
> /// Destructor
> ~PhysicsBasic ();
> /// Gets called when two objects are close enough
>
> /// ODE calls this function whenever it thinks two
> objects are close enough /// to check for collision
> /// \param data can't remember...
> /// \param o1 the first geom of two which should be
> checked for collision
> /// \param o2 the second geom of two which should be
> checked for collision
> void NearCallback (void *data, dGeomID o1, dGeomID o2);
> /// Create main world
> void CreateWorld ();
> /// Destory main world
> void DestroyWorld ();
>
> /// Main world
> dWorldID world;
> /// Main space (used by collision detection)
> dSpaceID space;
> /// Contact joints group (used by collision detection)
> dJointGroupID contact_group;
> /// Level geometry representation
>
> /// We define our level as geom only, because we don't
> want it to be affected by
> /// gravity. When we want an object to be affected by
> gravity, we define
> /// it as geom AND body.
> /// \n\n TODO: but how then it's known that this should
> be collidable?
> /// NearCallback (...) retrieves body info for
> collision detection...
> dGeomID level;
> };
>
> #endif // PHYSICS_BASIC_H
> _______________________________________________
> ODE mailing list
> ODE at q12.org
> http://q12.org/mailman/listinfo/ode
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://q12.org/pipermail/ode/attachments/20060727/4edcff27/attachment.htm
More information about the ODE
mailing list