OOP is fine, I'm not saying don't use it, only to get more familiar with it first ;)
Try recreating your car example, but instead of implementing the physics, only place the visible geometry objects in the code. Once you have a static scene working with all of the visible car components in place, then add the physics to the objects. You'll quickly discover whether the error exists in the 3D drawing section of the example or in the data management (globals, types, arrays etc) or elsewhere. For example, if you're not using data types with global scope to store the handles of the ODE wheel geometry, you will no longer have access to the objects and you'll get crashes/nightmares.
Try recreating your car example, but instead of implementing the physics, only place the visible geometry objects in the code. Once you have a static scene working with all of the visible car components in place, then add the physics to the objects. You'll quickly discover whether the error exists in the 3D drawing section of the example or in the data management (globals, types, arrays etc) or elsewhere. For example, if you're not using data types with global scope to store the handles of the ODE wheel geometry, you will no longer have access to the objects and you'll get crashes/nightmares.