CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C++ passer une classe dans une methode.

Qwerty22
Qwerty22
Niveau 4
25 septembre 2008 à 12:35:32

bonjour a tous,

en fait, voila mon probleme.

admettons que jaie 2 classe A et B. dans le main je declare A fiche et B Contrat.

je declare une methode dans la partie public de A et jaimerais lui passer comme parametre le contrat de classe B.

comment suis je cense lui donner ce parametre ?

quand jecris Fonction(B *c) , que je lui donne ds le main fiche.Fonction(contrat)

et que dans ma methode j utilise c.(nimportequel parametre) il me met une erreur, que ce soit pour un cout ou pour un simple =;

merci d avance

SEK3
SEK3
Niveau 6
25 septembre 2008 à 12:45:03

Si tu déclares "B Contrat;" et que l'argument de ta fonction est "B *c", il faut l'appeler comme ça :
fiche.Fonction(&contrat)

Qwerty22
Qwerty22
Niveau 4
25 septembre 2008 à 12:52:18

le main m est imposer ^^

c est donc ma declaration de methode qui n est pas bonne.

merci quand meme ^^

sangohan55
sangohan55
Niveau 10
25 septembre 2008 à 13:04:17

Si tu passes par référence, fiche.Fonction(contrat) sera bon.

Qwerty22
Qwerty22
Niveau 4
25 septembre 2008 à 13:37:30

c'est en effet une autre des option que jai essaye mais il naccepte tjrs pas.

class PrimeAssurance
{
private:
float MontantBase;
int TVA;
int BonusMalus;

public: (les set, les get, laffiche)
};

class ContratAssurance
{
private:
char NumeroPolice[25];
char * Nom;
float MontantPrime;
char DateEcheance[13];
public:

Qwerty22
Qwerty22
Niveau 4
25 septembre 2008 à 13:42:48

desole pr le double poste, jai eu une erreur et il a envoyer le message. donc comme je disais

c'est en effet une autre des option que jai essaye mais il naccepte tjrs pas.

class PrimeAssurance
{
private:
float MontantBase;
int TVA;
int BonusMalus;

public:
(les set, les get, laffiche) //ils marchent donc je les poste pas
};

class ContratAssurance
{
private:
char NumeroPolice[25];
char * Nom;
float MontantPrime;
char DateEcheance[13];
public:
(set, get, affiche) //ils marchent donc je les poste pas
void setPrimeAssurance(PrimeAssurance &p);
};

void
ContratAssurance::setPrimeAssurance(PrimeAssurance
&p)
{
/*si je met un cout dune des valeur du p. il met met une erreur : binary '<<' : no operator defined which takes a right-hand operand of type '' (or there is no acceptable conversion)*/
/*et si je met directement une valeur par exemple float b = une des valeur du p. , une autre erreur : =' : cannot convert from 'void (__thiscall PrimeAssurance::*)(int)' to 'float'*/

}

int main()
{
cout << "(3) ***** Test du constructeur par defaut de ContratAssurance *****" << endl;
ContratAssurance contrat1;
contrat1.affiche();
contrat1.setPrimeAssurance(prime2);
}

SEK3
SEK3
Niveau 6
25 septembre 2008 à 16:07:13

"cannot convert from 'void (__thiscall PrimeAssurance::*)(int)' to 'float'"

T'aurais pas oublié de mettre les parenthèses quand t'appelles tes getter ?

Qwerty22
Qwerty22
Niveau 4
25 septembre 2008 à 16:09:06

euh les getter fonctionnent ^^ ca ne vient pas de la.

jai fais les constructeur en les testant separement, je nai pas eu de probleme de ce cote la, ils fonctionnent. ^^

SEK3
SEK3
Niveau 6
25 septembre 2008 à 16:11:17

"cannot convert from 'void (__thiscall PrimeAssurance::*)(int)' to 'float'"

T'aurais pas oublié de mettre les parenthèses quand t'appelles tes getter ?

J'ai posté trop vite, je rajouterai même tu n'aurais pas appelé le setter au lieu du getter ?

SEK3
SEK3
Niveau 6
25 septembre 2008 à 16:12:29

Donc le code dans
ContratAssurance::setPrimeAssurance(PrimeAssurance
&p) qui ne marche pas actuellement marche si tu le met dans la main ?

Qwerty22
Qwerty22
Niveau 4
26 septembre 2008 à 00:37:28

voila desole de ne pas etre revenu plus tot. jai terminer mon programme tant que jetais bien dedans ^^ (et oui javais encore bcp a faire apres cette partie la lol)

donc voila : probleme regler ^^

sinon SEK3 --> si je le mettais ds le main ca ne marchait pas non plus.

javais oublier de changer une instance qui etait necessaire au bon deroulement de la suite de mon programme :)

merci a vous 2, sek et sangohan :)

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment