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






Répondre avec citation
Partager