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 :

durée de vie d'un temporaire


Sujet :

C++

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 307
    Points : 983
    Points
    983
    Par défaut durée de vie d'un temporaire
    Je souhaite appeler plusieurs fois des fonctions avec une API C du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void AddPolygon1(int nb_points, Point * points);
    void AddPolygon2(int nb_points, Point * points);
    ...
    Comme je souhaite faire des tests j'ai besoin de construire des polygones et j'ai écrit le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef std::vector< Point > Points;
    Points MakeRectangle(double dx, double dy) { ...}
    ...
    AddPolygon1(4u, &(MakeRectangle(200.0, 100.0).front()));
    MakeRectangle va créer un temporaire mais quand sera détruit ce temporaire ? Est-ce que dans l'appel à AddPolygon1 le pointeur sur "points" est ok ou est-ce que l'objet a déjà été détruit ?
    L'alternative serait d'écrire des wrapper autour de chacune des fonctions de l'api C mais je me demandais si je pouvais m'en passer.

  2. #2
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    C'est valide jusqu'au ';' (en gros).

    PS: l'API C devrait prendre des const si tu veux passer des temporaires non nommés.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    307
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 307
    Points : 983
    Points
    983
    Par défaut
    Merci !
    J'ai aussi ajouter les "const" dans l'api C, j'ai déjà toujours un peu de mal avec les "const" en C car j'ai rangé les "const" dans la case "C++"... je n'en avais jamais utilisé quand j'ai fait du C par le passé.

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

Discussions similaires

  1. classe temporaire : étendre la durée de vie
    Par screetch dans le forum C++
    Réponses: 9
    Dernier message: 05/12/2008, 10h31
  2. durée de vie d'une table temporaire
    Par hypothese dans le forum Administration
    Réponses: 1
    Dernier message: 01/07/2008, 17h58
  3. [savoir] durée de vie d'un PC?
    Par afrikha dans le forum Composants
    Réponses: 20
    Dernier message: 24/10/2005, 13h28
  4. [AS2] durée de vie d'une classe (extends movieclip)
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 23/07/2005, 13h33
  5. prob de durée de vie de IDvdGraphBuilder
    Par Chaksss dans le forum DirectX
    Réponses: 11
    Dernier message: 30/12/2004, 16h09

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