kann nicht deklarieren Sie die variable ‘ werden von abstrakten Typ ‘

EDIT: Nachdem die Ausgaben ein wenig Zeit den code zu verstehen, ich schrieb, ich weiß noch nicht, was ist falsch mit ihm. Dies ist die Basisklasse, von der ich abgeleitet meiner Klasse:

///ContactResultCallback is used to report contact points
struct  ContactResultCallback
{
    short int   m_collisionFilterGroup;
    short int   m_collisionFilterMask;

    ContactResultCallback()
        :m_collisionFilterGroup(btBroadphaseProxy::DefaultFilter),
        m_collisionFilterMask(btBroadphaseProxy::AllFilter)
    {
    }

    virtual ~ContactResultCallback()
    {
    }

    virtual bool needsCollision(btBroadphaseProxy* proxy0) const
    {
        bool collides = (proxy0->m_collisionFilterGroup & m_collisionFilterMask) != 0;
        collides = collides && (m_collisionFilterGroup & proxy0->m_collisionFilterMask);
        return collides;
    }

    virtual btScalar    addSingleResult(btManifoldPoint& cp,    const btCollisionObjectWrapper* colObj0Wrap,int partId0,int index0,const btCollisionObjectWrapper* colObj1Wrap,int partId1,int index1) = 0;
};

Nun, hier ist meine abgeleitete Klasse:

class DisablePairCollision : public btCollisionWorld::ContactResultCallback
{
public:
    virtual btScalar addSingleResult(btManifoldPoint& cp, const btCollisionObject* colObj0, int32_t partId0, int32_t index0, const btCollisionObject* colObj1, int32_t partId1, int32_t index1);

    btDiscreteDynamicsWorld* DynamicsWorld;
};

Und unten ist, wo ich implementieren Sie die main-Funktion. Noch nicht sicher, warum ich immer diese Fehlermeldung.

War ich mit dem code unten auf windows mit beiden vc2010 und code-Blöcke, ohne ein problem:

btScalar DisablePairCollision::addSingleResult(btManifoldPoint& cp, const btCollisionObject* colObj0, int32_t partId0, int32_t index0, const btCollisionObject* colObj1, int32_t partId1, int32_t index1)
{
    //Create an identity matrix.
    btTransform frame;
    frame.setIdentity();

    //Create a constraint between the two bone shapes which are contacting each other.
    btGeneric6DofConstraint* Constraint;
    Constraint = new btGeneric6DofConstraint( *(btRigidBody*)colObj0, *(btRigidBody*)colObj1, frame, frame, true );

    //Set limits to be limitless.
    Constraint->setLinearLowerLimit( btVector3(1, 1, 1 ) );
    Constraint->setLinearUpperLimit( btVector3(0, 0, 0 ) );
    Constraint->setAngularLowerLimit( btVector3(1, 1, 1 ) );
    Constraint->setAngularUpperLimit( btVector3(0, 0, 0 ) );

    //Add constraint to scene.
    DynamicsWorld->addConstraint(Constraint, true);
    return 0;
}

Nun ich versuche mein Projekt zu kompilieren unter Ubuntu aber ich bekomme diese Fehlermeldung, wenn ich versuche, die die Verwendung dieser Klasse:

/home/steven/Desktop/ovgl/src/OvglScene.cpp:211: error: cannot declare variable Callback to be of abstract type Ovgl::DisablePairCollision
  • Was Callback?
  • besser: Wo ist Callback?
  • welchen compiler benutzt du mit Code::Blocks unter Windows?
  • Callback ist eine variable innerhalb einer Funktion Klasse. Ich definiere es so: DisablePairCollision Callback; ich verwendete GCC-MinGW-compiler in den code-Blöcken.
  • Der code, den Sie geschrieben hat nichts mit dem Fehler zu tun. Warum postest du es? Und warum hast du nicht nach dem code, enthält die eigentlichen Fehler-Zeile?
InformationsquelleAutor SteveDeFacto | 2012-07-25
Schreibe einen Kommentar