checkCollideWith isnt for dynamic collisions, it is used to see if an object is set to collide with another, not to see if there's a collision. also, you can setUserPointer in your rigidbody to have a pointer to anything, may it be your own class or not. with that, you can then check what is what when colliding by using getUserPointer on the two btCollisionObjects.