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 :

[Débutant] Nombre d'arguments variables


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 42
    Points
    42
    Par défaut [Débutant] Nombre d'arguments variables
    Bonjour,

    Je suis en train d'écrire une classe en C++ managé.
    J'aimerai qu'il existe plusieurs constructeurs possibles.

    Dans mon exemple si ring est false j'aimerai que ma fonction n'attende pas de date2.
    Je n'ai pas compris comment faire malgré les indications dans la FAQ.

    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
     
    public ref class Task
    {
    	public:
    		DateTime heureTache;
    		String ^ texte;
    		bool alarme;
    		DateTime heureAlarme;
     
    	public: Task( DateTime date1 , String^ chaine1 , bool ring , DateTime date2 ){
    		heureTache = date1;
    		texte = chaine1;
    		alarme = ring;
    		if ( ring == true )
                        heureAlarme = date2;
    	};
     
    	~Task(void){};
     
    };

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    C'est tout simplement pas possible d'avoir un nombre quelconque d'arguments de types différents. De plus, c'est très dangereux, donc autant construire les constructeurs qui vont bien ou faire une factory pour ces objets.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    Comment fait-on plusieurs constructeurs pour la même classe ?

    Comme çà ?

    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
     
    public ref class Task
    {
    	public:
    		DateTime heureTache;
    		String ^ texte;
    		bool alarme;
    		DateTime heureAlarme;
     
    	public: Task( DateTime date1 , String^ chaine1 , bool ring , DateTime date2 ){
    		heureTache = date1;
    		texte = chaine1;
    		alarme = ring;
                    heureAlarme = date2;
    	};
     
     
    	public: Task( DateTime date1 , String^ chaine1 , bool ring ){
    		heureTache = date1;
    		texte = chaine1;
    		alarme = ring;
    	};
     
    	~Task(void){};
     
    };

  4. #4
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Dans mon exemple si ring est false j'aimerai que ma fonction n'attende pas de date2.
    En mettant une valeur par défaut à date2 ?

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    En plus, les variables membres doivent être initilisées dans la liste d'initialisation, pas dans le corps.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    En fait je débute en programmation objet.
    Peux tu m'expliquer comment faire stp.

    Merci.

  7. #7
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    Voilà le code que j'ai écris en lisant la FAQ:

    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
     
    public ref class Task
    {
    	public:
    		DateTime heureTache;
    		String ^ texte;
    		bool alarme;
    		DateTime heureAlarme;
     
    	public: Task( DateTime date1 , String^ chaine1 , bool ring , DateTime date2 )
    			: heureTache(date1) , texte(chaine1) , alarme(ring) , heureAlarme(date2)
    		{};
     
    	public: Task( DateTime date1 , String^ chaine1 , bool ring)
    			: heureTache(date1) , texte(chaine1) , alarme(ring)
    		{};
     
    	~Task(void){};
     
    };

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 67
    Points : 42
    Points
    42
    Par défaut
    Corrigez moi si je n'ai pas compris.
    Merci.

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Version plus courte avec un paramètre par défaut :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public: Task( DateTime date1 , String^ chaine1 , bool ring , DateTime date2 = DateTime())
    			: heureTache(date1) , texte(chaine1) , alarme(ring) , heureAlarme(date2)
    		{};

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

Discussions similaires

  1. Un script shell avec nombre d'argument variable
    Par lastrecrue dans le forum Linux
    Réponses: 1
    Dernier message: 28/05/2006, 11h35
  2. méthodes avec nombres d'arguments variable
    Par spynux dans le forum Langage
    Réponses: 2
    Dernier message: 26/05/2006, 13h51
  3. Réponses: 4
    Dernier message: 31/10/2005, 17h48
  4. Macros et nombre d'arguments variable
    Par kaisse dans le forum C
    Réponses: 7
    Dernier message: 28/07/2005, 10h10
  5. Nombre d'arguments variable
    Par gege2061 dans le forum C
    Réponses: 7
    Dernier message: 05/08/2004, 15h43

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