Une classe comme donnée membre

agbere Messages postés 3 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 19 octobre 2003 - 16 oct. 2003 à 09:59
agbere Messages postés 3 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 19 octobre 2003 - 19 oct. 2003 à 18:13
Bonjour à tous
Cela fait bien longtemps que je n'ai plus developpé en C++.
Aujourd'hui je suis confronté au problème suivant:

Code:
/*****************Points2D.h******************************/
class Points2D
{
private:
double m_x, m_y;
public:
Points2D(double, double);
~Points2D();
double X() const;
double Y() const;
void Affiche();
};

/**********************Fin*******************************/

/*****************Points2D.cpp******************************/
#include
#include <stdlib.h>
#include "Points2D.h"

Points2D::Points2D(double x, double y)
{m_x=x;
m_y=y;
}

Points2D::~Points2D()
{
}

double Points2D::X() const
{return m_x;
}

double Points2D::Y() const
{return m_y;
}

void Points2D::Affiche()
{cout <<"(" <<m_x <<"," <<m_y <<")" <<endl;
}
/**********************Fin*******************************/

/**********************Segments2D.h***********************/
#include "Points2D.h"

class Segments2D
{
private:
Points2D m_orig, m_extr;
int m_coul;
public:
Segments2D(double, double, double, double, int);
};

/**********************Fin*******************************/

/**********************Segments2D.cpp***********************/
#include
#include <stdlib.h>
#include "Segments2D.h"

Segments2D::Segments2D(double xo, double yo, double xe, double ye, int coul):
m_orig(xo, yo),
m_extr(xe, ye),
m_coul(coul)
{
}

int main()
{
Segments2D seg(1,2,3,4,0);
seg.m_orig.Affiche();
system("PAUSE");
return 0;
}
/**********************Fin***********************/

Tout se passe bien à la compilation. Et quand je veux l'exécuter les messages suivants sont affichés:
- Error: Unresolved external 'Points2D::points2D(double, double)' referenced from c:\exo\Segments2D.obj
- Error: Unresolved external 'Points2D::~points2D()' referenced from c:\exo\Segments2D.obj

Merci d'avance

4 réponses

garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
16 oct. 2003 à 11:43
C'est marrant j'aurais plutot cru que ça ne compilerait pas...

dans ton main() tu fais seg.m_orig.Affiche() alros que m_orig est un attribut privé.

Soit tu le passe en public, soit tu créer une méthode publique GetOrig() [c'est mieux]
0
garslouche Messages postés 583 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 29 mai 2015 1
16 oct. 2003 à 12:38
Par contre il y a un truc bizarre dans tes messages d'erreur : ta classe est Points2D (avec une majuscule à P) et le constructeur et le destructeur sont en minuscules....Pourtant dans le code que tu as mis c'est tout en majuscules. Tu es sur que c'est le même code ?
0
agbere Messages postés 3 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 19 octobre 2003
16 oct. 2003 à 14:08
Même en enlevant seg.m_orig.Affiche(), le problème persiste.
Et pour ce qui concerne les minuscules dans les messages d'erreurs, c'est des erreurs de frappe.

Merci quand même
0
agbere Messages postés 3 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 19 octobre 2003
19 oct. 2003 à 18:13
Bonjour,
Je vous suis reconnaissant pour toutes vos aides, mais j'ai le regret de vous dire que cela ne marche toujours pas.
J'ai donc créer un nouveau projet avec comme seul fichier celui de la classe Points2D.cpp qui dispose biensûr du fichier d'entête Points2D.h.
Quand je compile le projet en utilisant "make all", tout ce passe bien. C'est quand j'exécute le projet qu'il m'affiche le message d'erreur suivant: "you have accidently used the dummy version of OwlMain".
Vous pouvez voir ci-dessous les deux fichiers. Ce qui est en plus bizarre, c'est que quand j'exécute ce fichier cpp compilé sans création de projet, il marche très bien.

/*****************Points2D.h******************************/
class Points2D
{
private:
double m_x, m_y;
public:
Points2D(double, double);
~Points2D();
double X() const;
double Y() const;
void Affiche();
};

/**********************Fin*******************************/

/*****************Points2D.cpp******************************/
#include
#include <stdlib.h>
#include "Points2D.h"

Points2D::Points2D(double x, double y)
{m_x=x;
m_y=y;
}

Points2D::~Points2D()
{
}

double Points2D::X() const
{return m_x;
}

double Points2D::Y() const
{return m_y;
}

void Points2D::Affiche()
{cout <<"(" <<m_x <<"," <<m_y <<")" <<endl;
}

void main()
{Point2d a(5.0, 10.0);
Point2d b(8.0, 7.0);

a.Affiche();
b.Affiche();
system("PAUSE");
}

/**********************Fin*******************************/
0
Rejoignez-nous