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 :

Passage par référence entre class


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    informaticien géomètre
    Inscrit en
    Juillet 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : informaticien géomètre
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 20
    Points : 11
    Points
    11
    Par défaut Passage par référence entre class
    Bonjour à tous

    Je me trouve face à un cas que je ne comprend pas. Si quelqu'un pouvait éclairer ma lanterne, ce serait super.
    Je travaille avec Qt creator.
    Un peu de code pour mieux comprendre le problème :

    fichier Images.h // class que plusieurs parties du programme peut utiliser
    fichier Images.cpp

    fichier FusionOBJ.h
    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
    #include "Images.h"
     
    class FusionOBJ : public QMainWindow {
        Q_OBJECT
    public:
        FusionOBJ(Images & imgStock);
        /* ... */
    private:
        QAction* objFus;
        Images & m_imgStock;
        /* ... */
    private slots:
        void loadObjFus();
        /* ... */
    }

    fichier FusionOBJ.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include "FusionOBJ.h"
     
    FusionOBJ::FusionOBJ(Images &imgStock) : m_imgStock(imgStock) {
        /* ... */
        objFus = new QAction(QIcon(":/FUS.png"), "OBJ de fusion", this);
        connect(objFus, SIGNAL(triggered()), this, SLOT(loadObjFus()));
        btnFusObj->addAction(objFus);
        /* ... */
        /* ici, la référence m_imgStock pointe bien vers la class Images */
    }
     
    void FusionOBJ::loadObjFus() {
        /* ici, la référence m_imgStock pointe dans les choux !! */
    }

    Quand je lance le programme tout se passe bien. ma référence m_imgStock de la class FusionOBJ pointe bien la class Images.
    Mais quand je clique sur le bouton objFus pour lancer la méthode loadObjFus, c'est comme si il s'agissait d'une nouvelle instance de la class FusionOBJ car la référence m_imgStock n'est plus initialisée.

    Quelle est la boulette que je fais ?
    merci.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Avril 2010
    Messages : 85
    Points : 61
    Points
    61
    Par défaut
    je n'utilise pas Qt, mais peut être que l'ordre de construction de ta classe est :

    "QMainWindow",
    "private slots:..."
    "m_imgStock(imgStock)"
    le reste du constructeur
    ?

    Si tu as une fonction hors "private slots", as tu acces a ton image ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    salut,

    Une erreur potentielle (mais classique), c'est que ton Image est détruite entre la construction de ton instance de FusionObj et le click. Et de fait, ta référence pointe vers une zone qui existe plus et c'est la cata.
    Dernière modification par LittleWhite ; 16/07/2012 à 13h32.

  4. #4
    Membre à l'essai
    Homme Profil pro
    informaticien géomètre
    Inscrit en
    Juillet 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : informaticien géomètre
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Merci pour vos pistes de réflexion

    @superZozo : J'ai tenté le réagencement des déclarations, sans succès.
    J'ai tenté également l'appel hors 'slots' (très bonne idée au passage), et là encore la référence est dans les choux.

    @galerien69 : Mon image est bien présente dans la classe. En fait je n'ai pas prévu de destruction possible pour l'instant. La classe est détruite à la fermeture du programme.
    Mais ça m'a donné l'idée de définir mon pointeur dans la classe FusionOBJ, puisque c'est elle qui dispatch la référence à qui en a besoin.
    Sauf que nouveau problème...

    fichier .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "Images.h"
     
    class FusionOBJ : public QMainWindow {
        Q_OBJECT
    public:
        FusionOBJ();
        /* ... */
    private:
        Images & m_imgStock;
        /* ... */
    }
    fichier .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include "FusionOBJ.h"
     
    FusionOBJ::FusionOBJ() {
        /* ... */
        Images m_imgStock;
        m_imgStock.test = 100;	// variable 'bidon' pour tester le fonctionnement
        /* ... */
    }
    J'obtiens le message d'erreur : uninitialized reference member 'FusionOBJ::m_imgStock'
    Y'a comme qui dirait que ça se mord la queue ! Si je ne peux pas initialiser dans le constructeur... je suis coincé, non ?

    Je précise que je découvre le C++ et que je ne maitrise pas encore toutes les subtilités. Je passe peut-être à coté de quelque chose d'évident pour vous.
    Encore merci pour l'aide.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Ben tu as toi même compris.
    L'initialisation se fait avec les "deux points"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FusionOBJ::FusionOBJ():_imgStock(Images()){
     //code execute apres l'initialisation des variables
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Mon image est bien présente dans la classe.
    Donc oui et non. Dans ta classe (plus précisément ton instance de classe), tu as une référence vers l'image (qui a été créée en dehors de ta classe). Que se passe-t-il si en dehors ta "vraie" image est supprimée ou modifiée.

    Typiquement,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int main(){
    Images* img=new Images();
    FusionOBJ fu(*img);
    delete img;
    //ici fu._imgStock tente dacceder a une zone mémoire désallouée
    }

  6. #6
    Membre à l'essai
    Homme Profil pro
    informaticien géomètre
    Inscrit en
    Juillet 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : informaticien géomètre
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    merci galerien69

    Je n'avais pas compris que... j'avais compris

    Mais ça y est j'ai tilté en voyant ton message. Effectivement j'initialisais ma référence dans la méthode 'parent' qui provoquait le show de ma class FusionOBJ. Donc dès la fenètre affichée, sortie de la méthode d'appel et donc fin de la portée de ma référence, d'où le pointage dans les choux.

    Un grand merci pour ta patience, tu m'enlèves une belle épine du pied. D'autant que c'est pour le boulot et que ça commençait à urger.

  7. #7
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Bonjour Glandelf et bienvenue sur le forum

    L'explication de galerien69 est correcte, mais tu l'as compris de travers (sauf erreur de ma part)
    Ta référence est une variable membre de ta classe FusionOBJ et a donc la même durée de vie que l'objet qui la contient. La problème vient quand l'objet auquel le référence fait référence est détruit entre le moment de la création d'un objet FusionOBJ et l'appel du slot. Donc il faut corriger ton message en :
    Mais ça y est j'ai tilté en voyant ton message. Effectivement j'initialisais ma référence mon objet Images dans la méthode 'parent' qui provoquait le show de ma class FusionOBJ. Donc dès la fenètre affichée, sortie de la méthode d'appel et donc fin de la portée de ma référence mon objet Images, d'où le pointage dans les choux.
    (tu avais peut être compris correctement, mais j'avais un doute en lisant ta phrase)

    Sinon, petit problème, ta classe FusionOBJ hérite de la classe QMainWindow. Il faut donc appeler le constructeur de QMainWindow :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FusionOBJ::FusionOBJ() : QMainWindow(), _imgStock(Images())
    {
        //code execute apres l'initialisation des variables
    }
    (HS : tiens, il n'y a pas d'entrée dans la FAQ sur le constructeur d'une classe dérivée...)

  8. #8
    Membre à l'essai
    Homme Profil pro
    informaticien géomètre
    Inscrit en
    Juillet 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : informaticien géomètre
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Merci gbdivers pour tes précisions

    Tu as entièrement raison je n'ai pas employé les bons termes mais dans le fond j'ai compris le fonctionnement.

    Par contre le problème que tu évoques me chagrine un peu :

    Sinon, petit problème, ta classe FusionOBJ hérite de la classe QMainWindow. Il faut donc appeler le constructeur de QMainWindow :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FusionOBJ::FusionOBJ() : QMainWindow(), _imgStock(Images())
    {
        //code execute apres l'initialisation des variables
    }
    Je ne suis pas sûr de bien comprendre la portée de tes propos. Tout fonctionne parfaitement dans mon programme (enfin pour l'instant), mais pour être certain de ne pas faire une grosse bourinade, voici le code qui marche actuellement :
    fichier MyTopo.h
    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
    class MyTopo : public QMainWindow
    {
        Q_OBJECT
     
    public:
        MyTopo(QWidget *parent = 0);
        ~MyTopo();
        Images imgStocker;
        /* .... */
    private slots:
        void FusionObj();
        /* .... */
    private:
        FusionOBJ *formOBJ;
        /* .... */
    }
    fichier MyTopo.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    void MyTopo::FusionObj()
    {
        /* Avant je faisais l'erreur de déclarer ma référence ici !
        Images imgStocker; */
        formOBJ = new FusionOBJ(imgStocker);  // en faisant ainsi, plus de problème
        QMdiSubWindow *frmOBJ = mdiArea->addSubWindow(formOBJ);
        frmOBJ->show();
    }   /* Donc elle finissait sa vie ici ! */
    fichier FusionOBJ.h
    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
    #include "Images.h"
     
    class FusionOBJ : public QMainWindow {
        Q_OBJECT
    public:
        FusionOBJ(Images & imgStock);
        /* ... */
    private:
        QAction* objFus;
        Images & m_imgStock;
        /* ... */
    private slots:
        void loadObjFus();
        /* ... */
    }
    fichier FusionOBJ.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #include "FusionOBJ.h"
     
    FusionOBJ::FusionOBJ(Images &imgStock) : m_imgStock(imgStock) {
        /* ... */
        objFus = new QAction(QIcon(":/FUS.png"), "OBJ de fusion", this);
        connect(objFus, SIGNAL(triggered()), this, SLOT(loadObjFus()));
        btnFusObj->addAction(objFus);
        /* ... */
        /* ici, la référence m_imgStock pointe bien vers la classe Images */
    }
     
    void FusionOBJ::loadObjFus() {
        /* ici, la référence m_imgStock pointe toujours vers la classe Images :) */
    }
    Est-ce que ce que j'ai écris revient au même que ce que tu as marqué ?
    Merci pour vos éclairages avisés

  9. #9
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Non, il manque l'appel au constructeur de la classe parent (vérifie aussi pour les autres classes, par exemple MyTopo) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FusionOBJ::FusionOBJ() : QMainWindow(), _imgStock(Images())
    {
        //code execute apres l'initialisation des variables
    }
    Là, ton code tombe en marche, mais ça ne pourrait pas durer...

  10. #10
    Membre émérite
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Points : 2 799
    Points
    2 799
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Non, il manque l'appel au constructeur de la classe parent (vérifie aussi pour les autres classes, par exemple MyTopo)
    Tu es sûr de ton coup ? Il me semble bien que le constructeur par défaut des parents est automatiquement appelé (je ne vois pas comment il pourrait en être autrement en fait). Et l’avantage, c’est que mon compilateur a l’air d’accord avec ça (suffit de passer le constructeur sans paramètre en privé pour le vérifier).

    Par contre, ça me semble louche d’hériter de QMainWindow, surtout dans plusieurs classes du même programme..

  11. #11
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Je suis sur que je le mets systématiquement...
    Sur que le constructeur par défaut est appelé ? Non, a vrai dire. A force de le mettre tout le temps, je ne sais plus que dit la norme. Je dois vérifier.

    (si on m'avait posé la question, j'aurais dit que l'objet est alloué, mais pas initialisé sans l'appel explicite au constructeur? Quel compilateur ? En debug ou release ? Le compilateur corrigerait pas l'oubli ?)

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Je suis quasiment sûr que le constructeur par défaut est automatiquement appelé également.
    Je le spécifiais tout le temps aussi, et l'architecte technique m'a dit "mais... tu sais que ça sert à rien ? c'est implicite" "ha.. ok" ^^
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  13. #13
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    C'est spécifié (8.5 et 12.6.2), dans ce cas, le constructeur par défaut est appelé (j'ai pas pris garde de savoir si QMainWindow et/ou FusionOBJ sont abstraites, ca peut changer les choses).

  14. #14
    Membre à l'essai
    Homme Profil pro
    informaticien géomètre
    Inscrit en
    Juillet 2012
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : informaticien géomètre
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2012
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Je me sens tout petit quand je vois le niveau de vos discutions
    Donc en gros, tant que ça marche je touche à rien.

    Je pense pouvoir quand même préciser qu'il n'y a pas de classe abstraite... c'est pas encore de mon niveau de compétence.

  15. #15
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Merci pour les références
    Comme quoi, a force de faire toujours la même chose, on oublie si c'est possible de faire autrement

  16. #16
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut
    Citation Envoyé par gbdivers Voir le message
    Non, il manque l'appel au constructeur de la classe parent (vérifie aussi pour les autres classes, par exemple MyTopo) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FusionOBJ::FusionOBJ() : QMainWindow(), _imgStock(Images())
    {
        //code execute apres l'initialisation des variables
    }
    Là, ton code tombe en marche, mais ça ne pourrait pas durer...
    En fait, QMainWindow n'étant pas une classe de base virtuelle, il ne faut pas forcément en appeler le constructeur de manière explicite, étant donné qu'il existe un constructeur (passant pour être constructeur) par défaut

    En effet, le constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QMainWindow::QMainWindow(QWidget * parent = 0, Qt::WindowFlags flags = 0)
    a une valeur par défaut pour les deux arguments qu'il attend, ce qui en fait un constructeur sans argument, qui sera donc, d'office, appelé lorsqu'il s'agira de construire la classe mère
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  17. #17
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Points : 15 620
    Points
    15 620
    Par défaut
    Citation Envoyé par koala01 Voir le message
    SalutEn fait, QMainWindow n'étant pas une classe de base virtuelle, il ne faut pas forcément en appeler le constructeur de manière explicite, étant donné qu'il existe un constructeur (passant pour être constructeur) par défaut

    En effet, le constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QMainWindow::QMainWindow(QWidget * parent = 0, Qt::WindowFlags flags = 0)
    a une valeur par défaut pour les deux arguments qu'il attend, ce qui en fait un constructeur sans argument, qui sera donc, d'office, appelé lorsqu'il s'agira de construire la classe mère
    Je sais bien que QMainWindow::QMainWindow(QWidget * parent = 0, Qt::WindowFlags flags = 0) est un constructeur par défaut. C'est juste que je pensais que l'appel au constructeur par défaut du parent devait être explicite

  18. #18
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Je sais bien que QMainWindow::QMainWindow(QWidget * parent = 0, Qt::WindowFlags flags = 0) est un constructeur par défaut. C'est juste que je pensais que l'appel au constructeur par défaut du parent devait être explicite
    non, il n'y a pas de raison, du moins pour les classes de base non virtuelles...

    Par contre, si tu as une hiérarchie de classe proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Base
    {
    };
    class Derivee1 : public virtual Base
    {
    };
    class Derivee2 : public virtual Base
    {
    };
    class DeriveeFinale: public Derivee1, public Derivee2
    {
    };
    là, tu es, effectivement, obligé d'appeler explicitement le constructeur de Base dans DeriveeFinale, parce que le compilateur ne peut plus déterminer s'il doit appeler celui qui est hérité de Derivee1 ou celui qui est hérité de Derivee2
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 31/01/2012, 23h11
  2. Réponses: 4
    Dernier message: 26/12/2009, 20h48
  3. passage de paramètres par référence entre fonctions ?
    Par cabsen dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/05/2009, 10h47
  4. Réponses: 8
    Dernier message: 09/08/2007, 17h34
  5. classe vecteur3D, passage par référence
    Par deubelte dans le forum C++
    Réponses: 7
    Dernier message: 21/05/2007, 14h18

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