Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3793 connectés 

 


Dernière réponse
Sujet : [C++] Surcharge de fonction spéciale
robUx4 L'attribut status est dans les 2 cas private donc C OK.
 
La méthode GetStatus() retourne un type différent mais n'a pas de paramètres différents donc aucun moyen pour le compilo de savoir laquelle tu appelles.
 
De plus Si tu veux GetStatus() qui retourne STATUSA dans la classe B, ben tu essayes d'accéder à un attribut private, alors il aime pas...
 
A mon avis ca a aucun sens de vouloir faire ca (GetStatus qui retourne un type différent). Puisque dans ton code quand tu appelleras GetStatus tu devras déjà présupposer ce qu'il va te sortir comme type. Donc aucun intéret de surcharger...

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
robUx4 L'attribut status est dans les 2 cas private donc C OK.
 
La méthode GetStatus() retourne un type différent mais n'a pas de paramètres différents donc aucun moyen pour le compilo de savoir laquelle tu appelles.
 
De plus Si tu veux GetStatus() qui retourne STATUSA dans la classe B, ben tu essayes d'accéder à un attribut private, alors il aime pas...
 
A mon avis ca a aucun sens de vouloir faire ca (GetStatus qui retourne un type différent). Puisque dans ton code quand tu appelleras GetStatus tu devras déjà présupposer ce qu'il va te sortir comme type. Donc aucun intéret de surcharger...
BifaceMcLeOD Ou alors utilise des classes au lieu d'enums et fait hériter STATUSB de STATUSA.
 
Dans ce cas, B::GetStatus() devrait toujours retourner une valeur de type "const STATUSA&" (plutôt que "STATUSA" ), mais tu pourras aussi lui faire renvoyer une instance de STATUSB.
seblamb Non ,on ne peut pas!
bkadoum Est-ce possible de surcharger une fonction ayant le même nom, les même paramètres mais un type de retour différent?
Voici mon cas:
 
enum STATUSA
{
...
};
 
enum STATUSB
{
...
};
 
class A
{
private:
STATUSA status;
public:
STATUSA GetStatus() {return status;}
};
 
class B : public A
{
private:
STATUSB status;
public:
STATUSB GetStatus() {return status;}
};
 
Voila pourquoi j'ai besoin de surcharger la fonction GetStatus() de cette facon, car il y a une liste de status pour A et une autre pour B.
Vous me dirrez "t'a qu'a mettre des noms différents aux deux fonctions" Mais j'ai envie qu'elles aient le même nom c'est plus logique! Et la vous me dirrez "C'est pas logique ton code hahaha!" :)
Bref sans déconner vous savez comment je peux faire ca?

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)