Une classe comme donnée membre

Signaler
Messages postés
3
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
19 octobre 2003
-
Messages postés
3
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
19 octobre 2003
-
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

Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

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]
Messages postés
584
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
29 mai 2015

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 ?
Messages postés
3
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
19 octobre 2003

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
Messages postés
3
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
19 octobre 2003

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*******************************/