Surcharge de fonction spéciale [C++] - Programmation
Marsh Posté le 12-09-2001 à 03:11:56
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.
Marsh Posté le 12-09-2001 à 10:29:10
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...
Marsh Posté le 10-09-2001 à 14:23:57
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?