Bonjour à tous!
Bon voici mon problème : j'ai une classe CVector2 dont voici le code (juste un morceau)
#ifndef __CVector2_H__
#define __CVector2_H__
#include <math.h>
#include "SLEType.h"
//Classe de gestion des vecteurs dans l'espace 2D
namespace SLE
{
class CVector2
{
public:
//Constructeur par défaut, initialise le vecteur à 0
CVector2():m_x(0), m_y(0){}
//Constructeur surchargé, initialise le vecteur avec les composants donnés
CVector2(const real x, const real y):m_x(x), m_y(y){}
~CVector2();
//Inverse les composants du vecteur
void invert()
{
m_x = -m_x;
m_y = -m_y;
}
//Retourne la magnitude du vecteur
real magnitude()const
{
return sqrtf(m_x*m_x + m_y*m_y);
}
private:
real m_x;
real m_y;
};
}
#endif
J'ai aussi une classe CSurface qui gère les sprites 2D (voici le fichier.h)
#ifndef __CSurface_H__
#define __CSurface_H__
#include "CVector2.h"
namespace SLE
{
class CSurface
{
public:
CSurface(std::string image_path, CVector2 &position);
~CSurface();
private:
CVector2 m_position;
};
}
#endif
et voici le fichier.cpp
#include "include.h"
#include "CSurface.h"
using namespace SLE;
CSurface::CSurface(std::string image_path, CVector2 &position)
{
m_position = position;
}
J'ai donc un problème de passage par référence dans la classe CSurface et en tant que débutant en C++ je m'adresse à vous : vous pouvez voir dans le constructeur de CSurface le second paramètre est passé par référence d'ou mon problème si je ne passe pas ce paramètre par référence, mon compilateur (Visual C++ 2005) m'indique une erreur au niveau de l'édition des liens :
CSurface.obj : error LNK2001: symbole externe non résolu "public: __thiscall SLE::CVector2::~CVector2(void)" (??1CVector2@SLE@@QAE@XZ)
Pourquoi une référence est-elle obligatoire ici et surtout à quoi ça sert vu que je ne veux pas modifier la variable qui sera passée en paramètre?
Voila j'attend donc vos réponses avec impatience et merci d'avance
Partager