Appel non conforme d'une fonction membre non static

Signaler
Messages postés
9
Date d'inscription
jeudi 19 janvier 2012
Statut
Membre
Dernière intervention
16 avril 2012
-
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
-
Bonjour/Bonsoir
J'ai appeler dans une classe une fonction membre d'une autre classe , mais une erreur survient ''appel non conforme d'une fonction membre non static"
Voici le code de la fonction main
#include "stdafx.h"
#include "iostream"
#include "Vehicule.h"
#include "Bateau.h"
#include "Helicoptere.h"
#include "Vehicule_Roulant.h"
#include "Facture_Client.h"
#include "Facture_Parc.h"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{   int k; 
cout<<"Si Vous Voulez Ajouter Un Vehicule Tapez 1"<<endl;
cout<<"Si Vous Voulez Supprimer Un Vehicule Tapez 2"<<endl;
cout<<"Si Vous Voulez Rechercher Un Vehicule Tapez 3"<<endl;
cout<<"Si Vous Voulez Modifier Un Vehicule Tapez 4"<<endl;
cout<<"Si Vous Voulez Voir Les Statistiques D'un Vehicule Tapez 5"<<endl;
cout<<"Si Vous Voulez Quiter Tapez 6"<<endl;
 
Vehicule();
Bateau();
Helicoptere();
Vehicule_Roulant();
Facture_Client();
Facture_Parc();
Bateau::Affiche();
cin>>k;
return 0;
}



et voici le code de ma classe
#include "StdAfx.h"
#include "Bateau.h"
#include "iostream"
 
using namespace std;
 
Bateau::Bateau(void)
{
 cout<<"Ceci est le Constructeur de la Classe Bateau"<<endl;
}
 
 
 
Bateau::~Bateau(void)
{
 cout<<"Ceci est le Destructeur de la Classe Bateau"<<endl;
 
}
void Bateau::Saisie()
{
cout<<"Fonction saisie de Bateau"<<endl;
}
void Bateau::Affiche()
{
cout<<"Fonction Affiche de Bateau"<<endl;
}



j'ai pas encore préciser ce qu'il fallait saisir jusqu'à ce que je teste que les fonctions sont bel et bien appelé .Je travaille sous visual studio 2010

3 réponses

Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
Bonjour.

Tu n'as vraiment pas compris la programmation objet, non ? Essaie de revoir les cours sur la POO, par exemple sur le site du zéro, ça pourrait bien t'aider.

Pour répondre à ta question:
Tu essaies d'appeler des méthodes, sans créer l'objet associé, ça ne peut donc pas fonctionner.
Pour appeler la méthode "affiche", il faudrait plutôt quelque chose du genre:
Bateau b;
b.affiche();


"b::affiche", ne s'emploie que si la méthode est marquée "static", ce qui n'est pas le cas ici.

Quelques conseils:
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Un main s'écrit "int main(int argc, char** argv)"
- Les includes systèmes utilisent <> plutôt que "". Ex: #include
- En C++, une fonction qui ne prend pas d'arguments, s'écrit () et non (void). Ex: "Bateau::Bateau()" et non "Bateau::Bateau(void)"

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
Messages postés
9
Date d'inscription
jeudi 19 janvier 2012
Statut
Membre
Dernière intervention
16 avril 2012

Merci Pour votre réponse.En ce qui concerne les remarques sur les include "" et Bateau(void) c'est comme ça que ça marche avec visual sutdio 2010.
Quant à Bateau b; b.affiche; merci c'est bien ça qui m'est échappé , je devrais certainement réviser mon cours
Messages postés
3819
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
28 septembre 2020
113
En ce qui concerne les remarques sur les include "" et Bateau(void) c'est comme ça que ça marche avec visual sutdio 2010.

Non, juste non. Visual est un éditeur, pas un compilateur. Le C++ est le même partout. Ce n'est pas parce que ça fonctionne (coup de chance, je n'entre pas dans les détails) que c'est la bonne manière de faire...

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question