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 :

Créer un nouveau constructeur pour une classe préexistante


Sujet :

C#

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2006
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 48
    Points : 53
    Points
    53
    Par défaut Créer un nouveau constructeur pour une classe préexistante
    Bonjour,


    Je suis l'heureux possesseur de fichiers binaires qui me permettent d'utiliser moultes classes qui ont été prédéfinies par mes glorieux prédécesseurs.

    Or, je voudrais déclarer un objet d'une classe A qui existe déjà, mais en utilisant un constructeur différent.

    Pour fixer les idées, imaginons que le constructeur de A est :

    A(double[] vecteur);


    et que je veuille construire une instance de A qui prend

    A(int n, double a) = A(un vecteur de taille n rempli que avec des a)




    - Puis je déclarer un nouveau constructeur hors de la classe A ? (Genre en déclarant la classe en 2 parties, puisque je n'ai pas accès au code qui crée la classe A? (j'imagine que non))



    Je comptais alors créer une classe dérivée B :

    class B : A {

    public B(int n, double a)


    }

    Mais alors mon problème est : comment utiliser le constructeur de A sachant qu'avant, il me faut déclarer un vecteur ?

    J'aimerais faire :

    double[] monvecteur= new double[n];
    for (int i=0;i<monvecteur.Length;i++) {monvecteur[i]=a;}
    base(monvecteur);


    Le problème est que base n'est utilisable que dans l'entête, alors que j'ai besoin de faire quelques manips avant, qui elles ne rentrent pas dans l'en-tête.


    Comment puis je faire pour appeler ce constructeur ?



    Pour l'instant, j'ai créé une autre classe C qui contient un objet de type A, mais je trouve ca plutôt inélégant, étant donné que l'objet que je crée n'est rien d'autre qu'on objet A, avec un constructeur un peu particulier.

    Merci d'avance pour vos réponses...

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Tu peux faire comme ac :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class B : A
    {
      public B(int n, double a) : base(MakeArray(n, a)) { }
     
      private static double[] MakeArray(int n, double a)
      {
        double[] result= new double[n];
        for (int i=0;i<result.Length;i++)
          result[i]=a;
        return result;
      }
    }
    Pas testé (j'ai faim... ) mais ca devrait marcher.

Discussions similaires

  1. [Flex4] Plusieurs constructeurs pour une classe
    Par Marcoooh dans le forum Flex
    Réponses: 3
    Dernier message: 08/10/2010, 13h10
  2. créer un constructeur d'une classe héritant de Vector<T>
    Par MiXinG dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 20/03/2008, 20h14
  3. Réponses: 3
    Dernier message: 01/06/2007, 10h12
  4. Réponses: 5
    Dernier message: 30/01/2007, 13h23
  5. [POO] Deux constructeurs pour une même classe
    Par amika dans le forum Langage
    Réponses: 4
    Dernier message: 16/12/2006, 16h31

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