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 :

[Syntaxe] temporaire non nommé et constructeur copie privée


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par défaut [Syntaxe] temporaire non nommé et constructeur copie privée
    Bonjour,
    gcc 3.4.5 me refuse ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    class A {  A( const A& );
    public:
      A() {}
    };
    void foo ( const A& a ) {}
    int main() {   foo( A() ); }
    temp_unamed.cpp: In function `int main()':
    temp_unamed.cpp:2: error: `A::A(const A&)' is private
    temp_unamed.cpp:12: error: within this context

    VS2003 et VS2005 ne disent rien et j'ai pas de gcc 4 sous la main.

    qui à tort ou raison ?
    Merci

  2. #2
    Membre expérimenté Avatar de lun4t1k
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    276
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 276
    Par défaut
    C'est privé par défaut si l'on ne le spécifie pas?
    Pourquoi ne pas écrire ton const/copie ds la partie public (ou privée)?
    Si c'est une rvalue que tu cherches à créer, je ne sais pas si ca s'adapte pour les fonctions ou méthodes...

    Je ne vois pas trop l'intéret comme ca, ca t'appelle le constructeur par def de A puis foo...

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Oui, les fonctions membres sont privées par défaut dans une classe.
    Par contre, elles sont publiques par défaut dans une structure. (je crois bien d'ailleurs que c'est la seule différence avec une classe)

  4. #4
    Membre expérimenté Avatar de lun4t1k
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    276
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 276
    Par défaut
    Ok merci :p

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    qui à tort ou raison ?
    GCC.
    Le standard dit que quand on passe un temporaire par référence celui-ci doit être copiable.

    Comeau est plus clair :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ComeauTest.c(7): error: "A(const A &)" (declared at line 2), required for copy that
      was eliminated, is inaccessible
      int main() {   foo( A() ); }
                          ^
     
    1 error detected in the compilation of "ComeauTest.c".

  6. #6
    Membre expérimenté Avatar de lun4t1k
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    276
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 276
    Par défaut
    kézako commeau?

  7. #7
    Membre expérimenté
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par défaut
    Citation Envoyé par loufoque
    GCC.
    Le standard dit que quand on passe un temporaire par référence celui-ci doit être copiable.

    Comeau est plus clair :
    ah oui, j'ai pas pensé à comeau pour tester.
    Merci.


    Bon dommage, pour moi en tout cas, je ferais sans.

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    743
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 743
    Par défaut
    Citation Envoyé par loufoque
    Le standard dit que quand on passe un temporaire par référence celui-ci doit être copiable.
    Je connaissais pas cette règle. Pour quelle raison une telle restriction, puisque y'a pas de copie à faire?
    (Ceci dit je suis jamais tombé sur ce problème puisque c'est pas courant de déclarer les constructeurs de copie comme étant privé)

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/01/2011, 18h20
  2. Réponses: 3
    Dernier message: 23/07/2007, 18h01
  3. [Syntaxe] Image non affichée
    Par patrick_deb dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 30/12/2006, 11h16
  4. Probleme de cast en constructeur copy.
    Par hickscorp dans le forum C++
    Réponses: 13
    Dernier message: 23/08/2006, 14h06
  5. [Info] Open source, Divx et copie privée
    Par nuke_y dans le forum Politique
    Réponses: 122
    Dernier message: 22/12/2005, 10h58

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