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 :

initialisation de char[10]


Sujet :

C++

  1. #1
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut initialisation de char[10]
    bonjour
    Pourquoi le code suivant ne compile pas?
    Je veux attribuer la valeur f à ud.
    merci


    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
     class MaBase{
     public:
    	 MaBase(int o,int u,double a,char c,char *d):arg1(o),arg2(u),arg3(a),arg4(c),arg5(d){}
     
     private:
    	 int arg1;
    	 int arg2;
    	 double arg3;
    	 char arg4;
    	 char* arg5;
     };
     
     
    class MaDerive:public MaBase{
    public:
    	MaDerive(int o,int u,double a,char c,char *d, double e,char f[]):MaBase(o,u,a,c,d),d(e){
    		ud=f ;
    	}
     
    private:
    	char ud[10];
    	double d;
      };

  2. #2
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    les tableaux C n'ont pas de semantique de copie.
    Faut passer par boost/std::array

    En outre char[] f == char* f. Si tu veux capturer un tableau C tel quel, ca passe par un tempalte avec la taille en parametre

  3. #3
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 426
    Points : 827
    Points
    827
    Par défaut
    Salut,

    "ud" ( ligne 21 ) n'est définie qu'après la fonction "MaDerive" ( ligne 16 ), et comme "Maderive" est définie en ligne, c'est peut-être là la pb de compilation
    Mets tes membres données avant tes fonctions membres quand celles-ci sont définies "in line"!

    PS : donne le message du compilo, ça aide à répondre plus facilement!!

  4. #4
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    Citation Envoyé par bertry Voir le message
    Salut,

    "ud" ( ligne 21 ) n'est définie qu'après la fonction "MaDerive" ( ligne 16 ), et comme "Maderive" est définie en ligne, c'est peut-être là la pb de compilation
    Mets tes membres données avant tes fonctions membres quand celles-ci sont définies "in line"!
    non, aucun rapport

  5. #5
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    ok merci.
    Toujours dans le chapitre de l'initialisation/construction, je ne comprends pas cette phrase issue de la norme
    ISO 14882 2003:

    A declaration of a constructor for a class X is ill-formed if its first parameter is of type (optionally cvqualified)
    X and either there are no other parameters or else all other parameters have default arguments.
    J'imagine que ill-formed signifie "mal construit". D'après ce que je comprends un ctor par cpy est mal fait si le premier argument est de type X et si tous les arguments suivant sont par défaut. Je ne vois pas en quoi cette signature:

    X(const X& ,int=1) est pas bonne

    mERCI

  6. #6
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    La norme ne parle pas de référence...
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  7. #7
    Débutant  
    Inscrit en
    Novembre 2006
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 073
    Points : 217
    Points
    217
    Par défaut
    ok, en fait, c'est ca qui est ill-formed:
    Je ne comprends pas du tout cela non plus:
    Est-ce possible de me donner un exemple? Merci


    A member function template is never instantiated to perform the copy of a class object to an object of its class
    type. [Example:
    struct S {
    template<typename T> S(T);
    };
    S f();
    void g() {
    S a( f() ); // does not instantiate member template
    }
    —end example]

Discussions similaires

  1. Ré initialiser un char ?
    Par Invité dans le forum C
    Réponses: 11
    Dernier message: 05/09/2011, 16h30
  2. Initialisation, const char *, malloc
    Par kromartien dans le forum C
    Réponses: 8
    Dernier message: 17/06/2007, 23h53
  3. Réponses: 9
    Dernier message: 24/05/2007, 16h05
  4. char[] et initialisation
    Par Antoine_935 dans le forum C++
    Réponses: 5
    Dernier message: 08/09/2006, 10h16
  5. Pb d'initialisation de char*
    Par tsp dans le forum C++
    Réponses: 2
    Dernier message: 28/03/2006, 10h12

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