IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

Problème fonction virtuelles


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 40
    Par défaut Problème fonction virtuelles
    Bonjour j'ai un petit problème avec mes fonctions virtuelles. J'ai donc 4 fichiers.

    Joint.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    #ifndef DEF_JOINT
    #define DEF_JOINT
     
    #include <string>
     
    #include <ode/ode.h>
     
    class Joint
    {
    public:
    	// Constructeur
    	Joint();
     
    	// Méthodes
    	/* Renvoie le JointID */
    	dJointID getJointID();
    	/* Renvoie le nom du Joint */
    	std::string getName();
    	/* Renvoie les BodyID attaché aux joint (0 = premier bodyID, 1 = deuxième bodyID)  */
    	dBodyID getBodyID(int body);
     
    	// Méthodes virtuelles
    	/* Permet de rentrer la velocité du moteur */ 
    	virtual void setVelocity(double velocity);
    	/* Permet de rentrer la force du moteur */
    	virtual void setMaxForce(double force);
     
    protected:
    	// Attributs
    	/* Joint */
    	dJointID m_joint;
    	/* Le nom du Joint */
    	std::string m_name;
    };
     
    #endif
    Joint.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    #include "Joint.h"
     
    // Constructeur
    Joint::Joint()
    {
    	m_joint = NULL;
    }
     
    // Méthodes
    /* Renvoie le JointID */
    dJointID Joint::getJointID()
    {
    	return m_joint;
    }
     
    /* Renvoie le nom du Joint */
    std::string Joint::getName()
    {
    	return m_name;
    }
    /* Renvoie les BodyID attaché aux joint (0 = premier bodyID, 1 = deuxième bodyID)  */
    dBodyID Joint::getBodyID(int body)
    {
    	dBodyID tempBodyID = dJointGetBody(m_joint, body);
    	return tempBodyID;
    }
     
    // Méthodes virtuelles
    /* Permet de rentrer la velocité du moteur */ 
    void setVelocity(double velocity)
    { }
    /* Permet de rentrer la force du moteur */
    void setMaxForce(double force)
    { }
    MoteurSimple.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    #ifndef DEF_MOTEURSIMPLE
    #define DEF_MOTEURSIMPLE
     
    #include <string>
     
    #include <ode/ode.h>
     
    #include "Joint.h"
     
    class MoteurSimple : public Joint
    {
    public:
    	// Constructeur
    	MoteurSimple(dWorldID world, std::string name, dBodyID body1, dBodyID body2,
    		double axe_pos_x, double axe_pos_y, double axe_pos_z,
    		double axe_rot_x, double axe_rot_y, double axe_rot_z);
     
    	// Destructeur
    	~MoteurSimple();
     
    	// Méthodes virtuelles
    	/* Permet de rentrer la velocité du moteur */
    	virtual void setVelocity(double velocity);
    	/* Permet de rentrer la force du moteur */
    	virtual void setMaxForce(double force);
     
    private:
    	// Attributs
     
     
    };
     
    #endif
    MoteurSimple.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    #include "MoteurSimple.h"
     
    // Constructeur
    MoteurSimple::MoteurSimple(dWorldID world, std::string name, dBodyID body1, dBodyID body2, double axe_pos_x, double axe_pos_y, double axe_pos_z, double axe_rot_x, double axe_rot_y, double axe_rot_z)
    {
    	m_name = name;
    	m_joint = dJointCreateHinge(world, 0);
    	dJointAttach (m_joint, body1, body2);
    	dJointSetHingeAnchor (m_joint, axe_pos_x, axe_pos_y, axe_pos_z);
    	dJointSetHingeAxis (m_joint, axe_rot_x, axe_rot_y, axe_rot_z);
    }
     
    // Méthodes virtuelles
    /* Permet de rentrer la velocité du moteur */
    void MoteurSimple::setVelocity(double velocity)
    {
    	dJointSetHingeParam (m_joint, dParamVel, velocity);
    }
     
    /* Permet de rentrer la force du moteur */
    void MoteurSimple::setMaxForce(double force)
    {
    	dJointSetHingeParam (m_joint, dParamFMax, force);
    Le code compile correctement mais j'ai un problème lors de l'édition du lien:
    j'ai ces erreurs:
    Joint.obj : error LNK2001: symbole externe non résolu "public: virtual void __thiscall Joint::setMaxForce(double)" (?setMaxForce@Joint@@UAEXN@Z)

    Joint.obj : error LNK2001: symbole externe non résolu "public: virtual void __thiscall Joint::setVelocity(double)" (?setVelocity@Joint@@UAEXN@Z)

    Je crois comprendre que cela vien de mes fonctions virtuelles mais je ne comprend pas pourquoi. Peut etre une erreur de programmation. Si quelqu'un peu m'aider à retrouver ce problème. (j'ai déjà eu ce problème et résolu d'uneautre manière sans passer par les fonctions virtuelles, mais la je suis obligé)

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Manque le nom des classes dans la définition de tes fonctions dans Joint.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Méthodes virtuelles
    /* Permet de rentrer la velocité du moteur */ 
    void Joint::setVelocity(double velocity)
    { }
    /* Permet de rentrer la force du moteur */
    void Joint::setMaxForce(double force)
    { }
    Faute classique ...
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre averti
    Inscrit en
    Avril 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 40
    Par défaut
    Désolé j'avais pas fais attention merci. Je comprend mieux pourquoi ça ne marchait pas maintenant.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème fonction virtuelle pure
    Par arkerone dans le forum Langage
    Réponses: 3
    Dernier message: 27/02/2012, 22h29
  2. Réponses: 14
    Dernier message: 18/07/2011, 21h00
  3. Réponses: 8
    Dernier message: 18/06/2007, 15h06
  4. Réponses: 2
    Dernier message: 20/08/2004, 17h10
  5. fonctions virtuelles
    Par Mau dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 21/11/2003, 09h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo