Problème d'héritage [Résolu]

Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Dernière intervention
13 juillet 2010
- 20 avril 2010 à 14:16 - Dernière réponse :
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Dernière intervention
13 juillet 2010
- 22 avril 2010 à 15:19
Bonjour,

Je souhaite créer une ma classe hérité d'une classe parente :
class MyEnfant : Parent
{
  // consructor
  public MyEnfant()
  {
  }
}


L'erreur :
Erreur 2 'Parent' ne contient pas un constructeur qui accepte des arguments '0'


Je ne comprends pas...
Note : la classe Parent contient un constructeur qui prend un paramètre.
Comment faire ?
Merci !
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
327
Date d'inscription
vendredi 23 décembre 2005
Dernière intervention
8 février 2011
20 avril 2010 à 14:40
1
Merci
Il faut préciser la valeur du paramètre à utiliser pour le constructeur parent
class MyEnfant : Parent
{
  // consructor
  public MyEnfant() : base(la valeur du paramètre)
  {
  }
}



---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.

Merci cs_GG29 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_GG29
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Dernière intervention
13 juillet 2010
20 avril 2010 à 14:44
0
Merci
Je précise que le classe parente ne contient qu'un seul constructeur, il ne devrait donc pas y avoir d'ambiguïté ..
Commenter la réponse de pyr0123
Messages postés
327
Date d'inscription
vendredi 23 décembre 2005
Dernière intervention
8 février 2011
20 avril 2010 à 14:50
0
Merci
il ne devrait donc pas y avoir d'ambiguïté

Certes il n'y a pas d'ambiguité. Cependant comment tu veux que le compilateur trouve la valeur du paramètre à passer au constructeur. Il n'est pas encore devin donc c'est à toi de la préciser avec la syntaxe que je t'ai précisée dans le message précédant.

---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
Commenter la réponse de cs_GG29
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Dernière intervention
13 juillet 2010
20 avril 2010 à 14:53
0
Merci
Ok merci bcp cela fonctionne.

Puis-je alors écrire mon constructeur comme cela ; est-ce logique ?

public MyEnfant(string id) : base(id)
{
  Parent p = new Parent(id);
}
Commenter la réponse de pyr0123
Messages postés
327
Date d'inscription
vendredi 23 décembre 2005
Dernière intervention
8 février 2011
20 avril 2010 à 14:57
0
Merci
C'est parfaitement logique.
Cependant Parent p = new Parent(id); ne sert à rien dans le code que tu as mis.

---
Généralement le bug se situe entre le clavier et la chaise.
Le temps est une "chose" introuvable dont l'existence ne fait aucun doute.
Commenter la réponse de cs_GG29
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Dernière intervention
13 juillet 2010
20 avril 2010 à 14:59
0
Merci
OK, si j'ai bien compris le fait de rajouter
: base(id)

permet d'appeler le constructeur parent sans passer par le new..
Génial =)
Commenter la réponse de pyr0123
Messages postés
18
Date d'inscription
lundi 11 janvier 2010
Dernière intervention
21 mai 2010
20 avril 2010 à 15:55
0
Merci
c'est bien, ça, passer par new, te créerai une nouvelle instance, tandis que la, le constructeur parent initialisera les propriété du fils. (propriétés que le fils a hérité du père)

c'est tout l'intérêt de l'héritage.
Commenter la réponse de patatasux
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Dernière intervention
13 juillet 2010
21 avril 2010 à 15:31
0
Merci
Dernière question, est-il possible de créer une classe enfant singleton aussi ?
C'est à dire, une classe A 'parente' singleton, et une classe 'enfant' B singleton aussi.
Car, dans la classe A le constructeur est private d'après le pattern singleton .
Quand je créé l'enfant, il ne 'verra' pas le construteur parent puisqu'il est en private.

Comment s'en sortir ?!

Code au cas ce n'est pas clair :
class Parent
{
 private Parent() { }
 public Parent GetInstance() { .. } // singleton
}
class Enfant : Parent
{
  private Enfant() {} // erreur compilo : non-visibilité de Parent.Parent()
  public Enfant GetInstance(){ .. }
}
}


Merci
Commenter la réponse de pyr0123
Messages postés
48
Date d'inscription
lundi 28 juillet 2003
Dernière intervention
13 juillet 2010
22 avril 2010 à 15:19
0
Merci
protected Parent()
et ca marche :)
Commenter la réponse de pyr0123

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.