begin process at 2012 05 29 22:22:54
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

problème sur une création de classe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème sur une création de classe

mercredi 17 février 2010 à 18:21:15 | problème sur une création de classe

simonpelloquin

Bonjour,

Je bloque sur un problème de définition de classe et ça commence à me prendre la tête. Est-ce que vous pourriez m'indiquer ce qui ne vas pas parce que là j'ai épuisé ma patience...
merki d'avance

Le problème est le suivant : j'ai une classe Dates (fichier .cc et .h) qui contient une date de début, une date de fin et deux méthodes publiques pour récupérer ces dates. Compilation : Impeccable. Lors de l'édition des liens j'ai le message comme quoi dans main.cc, j'ai une "undefined reference to `CDates::CDates()', undefined reference to `CDates::getDateDebut()'"


fichier Dates.h
#ifndef DATES_H
#define DATES_H

class CDates
{
private :
std::string m_DateDebut;
std::string m_DateFin;
public :
CDates();
std::string getDateDebut();
std::string getDateFin();
};

#endif

Fichier Dates.cc
#include <string>
#include <Dates.h>

using namespace std;

CDates::CDates()
{
m_DateDebut = "";
m_DateFin = "";
}

string CDates::getDateDebut()
{
return m_DateDebut;
}

string CDates::getDateFin()
{
return m_DateFin;
}

fichier main.cc
#include <string>
#include <Dates.h>

using namespace std;

int main()
{
CDates test;

test.getDateDebut();
}

Simon
mercredi 17 février 2010 à 19:36:06 | Re : problème sur une création de classe

Moomoon07

Membre Club
Réponse acceptée !
Salut,

En survolant rapidement ... je crois que tu n'appelle pas ton constructeur.
Ton objet n'est pas alloué dans le tas.

Je fais pas de C++, donc je connais pas trop la syntaxe, mais en C# je ferais
CDates test = new CDates();

A+
mercredi 17 février 2010 à 19:43:57 | Re : problème sur une création de classe

simonpelloquin

Réponse acceptée !
merci pour la rapidité de ta réponse.
En fait, je viens de trouver mon erreur... dans la syntaxe de l'édition des liens
Pour info, en c++, tu peux aussi appeller le constructeur en instanciant une variable.


Simon
mercredi 17 février 2010 à 19:48:48 | Re : problème sur une création de classe

vecchio56

Administrateur CodeS-SourceS
En C++ si tu déclares un objet (pas un pointeur) il est alloué dans la pile, et la syntaxe de Moomoon07 n'est même pas correcte
CDates test();
ou bien
CDates* test = new CDates();

_____________________________________
Un éditeur de ressources gratuit pour Windows
jeudi 18 février 2010 à 08:23:41 | Re : problème sur une création de classe

simonpelloquin

Salut vecchio56

ok pour la syntaxe de l'allocation dynamique... mais pourquoi les parenthèses sur : CDates test();


Simon
jeudi 18 février 2010 à 10:18:28 | Re : problème sur une création de classe

dragonjoker59

Réponse acceptée !
Quand il n'y a pas d'argument pour ton constructeur, tu n'es pas obligé de mettre les parenthèses, et ce sur l'allocation dynamique comme statique


Coin coin !
jeudi 18 février 2010 à 17:30:03 | Re : problème sur une création de classe

CptPingu

Administrateur CodeS-SourceS
A noter qu'il est préférable de ne pas mettre les parenthèses.
Le sens n'est pas le même avec et sans !!!
Lorsque l'on fait un new, pas de différence, mais sans le new, l'un veut dire "je construit l'objet" et l'autre "je declare une fonction qui retourne mon objet"

Voici un petit exemple récapitulatif:
Code C/C++ :
#include <iostream>

class Toto
{
public:
  Toto()
  {
    std::cout << "Construction de Toto" << std::endl;
  }
};
int main()
{
  std::cout << "Init normal" << std::endl;
  Toto t;
  std::cout << "Constructeur initalise" << std::endl;

  std::cout << std::endl;

  std::cout << "Init invalide" << std::endl;
  Toto x();
  std::cout << "Et oui rien ne s'affiche..." << std::endl;

  std::cout << std::endl;
  std::cout << std::endl;

  std::cout << "Init normal" << std::endl;
  Toto* pt = new Toto;
  std::cout << "Constructeur initalise" << std::endl;
  delete pt;

  std::cout << std::endl;

  std::cout << "Init normal aussi" << std::endl;
  Toto* px = new Toto();
  std::cout << "Constructeur initalise" << std::endl;
  delete px;

  return 0;
}


_____________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio


Cette discussion est classée dans : problème, string, dates, std, cdates


Répondre à ce message

Sujets en rapport avec ce message

Problème avec les std::string [VC++6.0] [ par D1m3x ] Je suis en train de programmer un petit programme où j'utilise les templates, c'est la première fois que j'en utilise, alors je ne connais pas encore Probleme de hash_map avec les string [ par playmo420 ] SalutJ'ai besoin d'utiliser une table de hachage dans un programme mais lorsque je prend une cle de type string, il y a une erreur... (ca fonctionne a utlisation de la classe string [ par borgeomi ] borgeomibonjouuuuuuur !!!!!nouveau programmeur en C ++ ( mais vieux en cobol )sous visual C++création d'une fonction qui enlève les espaces de début e Peut-on donner une longueur fixe à std::string [ par marik7335 ] Salut à tous,Je voudrais savoir si c'est possible d'imposer une longueur fixe à la variable suivante : std::string var ? Problème avec string [ par visualstar ] Bonjour, J'ai un problème en C++ avec les string.Comment peut-on faire pour passer un string à une fonction. Dans cette fonction, je fais un cin ; mai convertir une string en float [ par jean_vandevere ] Bonjour à tous, je cherche à convertir une valeur de format string en un float en dev C++.Le code que je tape est le suivant et consite à aller lire Remplir un string, probleme [ par ChamY ] Bonjour, Je suis en 1ere année de BTS info. J'ai un projet a realiser pendant ces vancances : une bibliotheque. J ai un ptit probleme lors de l uti Probleme EDL (VC++7) [ par vecchio56 ] Bonjour J'ai deux problèmes d'edition de liens: Dialog.obj : error LNK2001: symbole externe non résolu "public: void __thiscall std::_String_base::_X Problème avec std::vector et std::pair [ par luhtor ] J'ai une fonction qui compilait très bien sous linux, mais pas moyen de la compiler avec devCpp. Quelqu'un saurait pourquoi il la refuse ? template Problème avec delete [ par bibiteinfo ] Bonjour, je suis en train de faire un chat.  Je lance mon serveur si je connecte un client, j'ai cette ligne là qui se fait appeler :m_nomJoueur = CIn


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,713 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales