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é)