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