Erreur conversion from `Sportif*' to non-scalar type `Sportif' requested

Signaler
Messages postés
84
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
1 juillet 2006
-
Messages postés
98
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
24 janvier 2018
-
Bonjour,

je débute en C++ et je tente de compiler ma première classe sans y arriver, car je n'arrive pas à comprendre le message d'erreur de dev c++.

header.h

#include <cstdlib>
#include
#include <string>
#include
using namespace std;

Sportif.h

#include "header.h"


/****************************************************************
Interface de la classe sportif
******************************************************************/


class Sportif {

private:

int age;
string nom;
string prenom;
int formePhysique;

public:

Sportif();
Sportif(int age, string nom, string prenom, int formePhysique);
Sportif(const Sportif & sport);
~Sportif();
int getAge();
string getNom();
string getPrenom();
int getFormePhysique();
void setAge(int age);
void setNom(string nom);
void setPrenom(string prenom);
void setFormePhysique(int forme);
void toString(void);
};


/****************************************************************
Implémentation de la classe sportif
******************************************************************/


// Constructeur par défaut


Sportif::Sportif (void) {
this->age = 0;
this->nom = "";
this->prenom = "";
this->formePhysique = 100;
}


// Constructeur


Sportif::Sportif (int age, string nom, string prenom, int formePhysique) {
this->age = age;
this->nom = nom;
this->prenom = prenom;
this->formePhysique = formePhysique;
}


// Constructeur de recopie


Sportif::Sportif (const Sportif & sport) {
this->age = sport.age;
this->nom = sport.nom;
this->prenom = sport.prenom;
this->formePhysique = sport.formePhysique;
}


// Destructeur


Sportif::~Sportif(void){
}


// Accesseurs


int Sportif::getAge(){
return this->age;
}


string Sportif::getNom(){
return this->nom;
}


string Sportif::getPrenom(){
return this->prenom;
}


int Sportif::getFormePhysique(){
return this->formePhysique;
}


// Mutateurs


void Sportif::setAge(int age){
this->age = age;
}


void Sportif::setNom(string nom){
this->nom = nom;
}


void Sportif::setPrenom(string prenom){
this->prenom = prenom;
}


void Sportif::setFormePhysique(int forme){
this->formePhysique = forme;
}

// Méthode


void Sportif::toString(){
cout << "Nom : " << nom << " prenom : " << prenom << " age : " << age << " forme physique : " << formePhysique;
}

main.cpp

#include "header.h"
#include "Sportif.h"


int main(int argc, char *argv[])
{
Sportif sport = new Sportif(18,"John","john",25);
sport.toString();
system("PAUSE");
return EXIT_SUCCESS;
}

Voilà, il n'y a pas grand chose, mais apparemment j'ai déjà commis une erreur ! Voici ce que me dit le compilateur :

In function `int main(int, char**)':
main.cpp conversion from `Sportif*' to non-scalar type `Sportif' requested
Makefile.win [Build Error] [main.o] Error 1

Si vous pouviez m'aider assez rapidement se serait vraiment gentil de votre part, car je dois résoudre ce problème pour après demain au plus tard. Merci beaucoup pour vos réponses,

Bonne soirée, et bonne prog

4 réponses

Messages postés
98
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
24 janvier 2018

Essai ca:
Sportif * sport = new Sportif(18,"John","john",25);
Messages postés
84
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
1 juillet 2006

Génial, merci! ca marche effectivement. Par contre j'ai un soucis par
la suite, le compilateur me dit que la procédure toString() n'est pas
déclarée!!! Pourtant si je fais



Sportif sport;

sport.toString();



Ca fonctionne, donc c'est qu'elle est bien déclarée! Donc j'ai essayé des trucs comme :



Sportif * sport = new Sportif(18,"John","john",25);

* sport.toString();



ou



Sportif * sport = new Sportif(18,"John","john",25);


&sport.toString();



Mais ca me marque toujours le même message, dans main.cpp :



11 `toString' has not been declared

11 request for member of non-aggregate type before '(' token



Bizarroide
Messages postés
84
Date d'inscription
lundi 31 mars 2003
Statut
Membre
Dernière intervention
1 juillet 2006

alala le noob que je fais... il fallait marquer



sport->toString();



vu que c'est un pointeur. Je sens que j'ai pas fini de m'amuser avec ces petites bêtes lol

Merci beaucoup en tout cas
Messages postés
98
Date d'inscription
vendredi 17 février 2006
Statut
Membre
Dernière intervention
24 janvier 2018

Oui désolé je l'avais vu mais j'etais sur que t'allais trouvé tout de suite puisque que ca en découle.
Oui faut faire attention aux pointeurs.