IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

[c#]Constructeur de classe dérivée


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    b4u
    b4u est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Par défaut [c#]Constructeur de classe dérivée
    Bonsoir,

    j'ai un problème de syntaxe avec le code suivant:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
        public class A
        {
        }
        
        public class B
        {
            public B(A dummy)
            {
            }
        }
    
        public class C : B
        {
            public C()
                : base(new A())
            {
                // je veux conserver dans le membre privé _a une reference vers l'objet A qui a servi de paramètre à la construction de B
            }
    
            private A _a;
        }
    Je ne vois pas comment faire pour, dans le constructeur de C, sauver dans la variable d'instance C._a la référence renvoyée par l'expression en rouge dans l'extrait.
    C'est possible en c#?
    Merci d'avance, bonne soirée

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Tu déplaces ton membre _a et tu le mets protected dans la classe B, et dans le constructeur de B tu le fais pointer vers l'objet A. Ensuite dans la classe C tu pourras récupérer la variable _a grace à l'héritage.
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  3. #3
    b4u
    b4u est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Par défaut
    Salut,
    je n'ai pas accès a l'implémentation de la classe B, c'est une classe du framework .NET.
    Il y a pas d'autre solution?

  4. #4
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Bonjour,

    il faut créer une classe intermédiaire

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
        public class B2 : B
        {
            protected A _a;
     
            public B2(A dummy) 
                 : base(dummy)
            {
                 _a = dummy
            }
        }
     
        public class C : B2
        {
            public C()
                : base(new A())
            {
            }
            // Ici tu as assez à _a car elle est déclarée protected dans B2
        }

  5. #5
    b4u
    b4u est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 87
    Par défaut
    Kelpan > ca m'embete un peu d'avoir à créer une classe juste pour ça. Finalement je vais faire comme ça je pense:
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
        public class A
        {
        }
     
        public class B
        {
            public B(A dummy)
            {
            }
        }
     
        public class C : B
        {
            private C(A a) : base(a)
            {
                _a = a;
            }
     
            public C()
                : this(new A())
            {
            }
     
            private A _a;
        }

  6. #6
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Evidemment, comment j'ai fait pour ne pas y penser !!!??

    Ca c'est la syntaxe c#, je ne suis pas habitué et ça m'embrouille !

    En tout cas bien vu

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Constructeur classe dérivée à partir d'objets parents
    Par Zavonen dans le forum Général Python
    Réponses: 16
    Dernier message: 06/04/2009, 20h09
  2. constructeur classe dérivée
    Par Nayila dans le forum Langage
    Réponses: 3
    Dernier message: 10/12/2007, 16h49
  3. Réponses: 8
    Dernier message: 17/04/2007, 11h35
  4. Réponses: 7
    Dernier message: 15/07/2005, 15h07
  5. Déterminer le type d'une class dérivée
    Par LDDL dans le forum MFC
    Réponses: 3
    Dernier message: 10/12/2004, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo