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 :

Constructeurs ambigus .


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 60
    Points : 36
    Points
    36
    Par défaut Constructeurs ambigus .
    Bonjour tout le monde,
    bien que j'aie déjà étudié le C++, mais en passant à C#, je suis embrouillée avec les constructeurs .
    Voilà un bout de code dont l'erreur m'échappe..


    Code : 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
     
    namespace heritage_1
    {
        public class voiture
        {
            private int vitesse;
            private string couleur;
     
     
            public voiture (int vitesseVoiture)
            {
                vitesse=vitesseVoiture;
            }
     
            public voiture()
            {
                vitesse = 10;
            }
     
     
            public voiture():this (10)
            {
     
            }
     
     
            public voiture(string couleurVoiture):this() 
            {
                couleur = couleurVoiture;
            }
        }
    }
    l'erreur est la suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Erreur	2	L'appel est ambigu entre les méthodes ou propriétés suivantes*: 'heritage_1.voiture.voiture()' et 'heritage_1.voiture.voiture()'
    A ce que je sache, les ambiguïtés viennent des signatures identiques des méthodes, alors que, les signatures du second et 4ème constructeur sont bien différentes.

    qu'est ce qui m'échappe??!

    Merci bien pour toute réponse

  2. #2
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Bonsoir,

    Le souci ne se situe pas entre les 2ème et 4ème constructeur ; mais entre le 2ème et le 3ème, ils sont identiques (en terme de signature)

    Cordialement !

  3. #3
    Invité
    Invité(e)
    Par défaut
    L'erreur vient tout simplement du fait que tu as défini 2 constructeurs par défaut (constructeur sans paramètres). Cela est interdit en C# comme en VB.Net. Le constructeur par défaut n'est pas obligatoire mais si tu en fournis alors tu en définis un et un seul.
    L'un de ces deux constructeurs ci-dessous doit disparaître pour que ça compile :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public voiture()
            {
                vitesse = 10;
            }
     
     
            public voiture():this (10)
            {
     
            }

  4. #4
    Nouveau membre du Club
    Inscrit en
    Juillet 2012
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Juillet 2012
    Messages : 60
    Points : 36
    Points
    36
    Par défaut
    je ne sais pas pourquoi je m'arrachais les cheveux à trouver l'erreur entre le 2eme et le 4eme constructeur...
    Faut bien prendre le temps de contempler la totalité de son code

    Merci bien et bonne soirée

  5. #5
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    Par défaut ou pas c'est surtout le fait que 2 constructeurs ont la même signature qui provoque l’ambiguïté non ? pas spécialement que ce soient des constructeurs par défaut.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sehnsucht Voir le message
    Par défaut ou pas c'est surtout le fait que 2 constructeurs ont la même signature qui provoque l’ambiguïté non ? pas spécialement que ce soient des constructeurs par défaut.
    T'as raison. Un constructeur est avant tout une méthode. La règle c'est jamais plusieurs méthodes avec la même signature.

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

Discussions similaires

  1. [Reflection] Récupérer un constructeur ayant un paramètre int
    Par narmataru dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 09/07/2004, 09h53
  2. [VB6]Déclaration d'un Constructeur Spécialisé
    Par TagadaTsoin dans le forum VB 6 et antérieur
    Réponses: 21
    Dernier message: 26/05/2004, 14h09
  3. [Constructeur]Pb avec la surcharge d un constructeur
    Par cmoulin dans le forum Langage
    Réponses: 3
    Dernier message: 26/04/2004, 09h29
  4. Capture d'exception dans un constructeur
    Par declencher dans le forum Composants VCL
    Réponses: 8
    Dernier message: 03/02/2004, 12h52
  5. pb constructeurs classes dérivant classe abstraite
    Par Cornell dans le forum Langage
    Réponses: 2
    Dernier message: 10/02/2003, 19h02

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