Re: Question de cpp

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: guilde
Subject: Re: Question de cpp
Bonjour !

Patrick Dupré a écrit :
> Je peux faire dans ma function
>
>     MatDoub &A
>     puis A = new MatDoub (2, 3)

>
> mais cela ne functionne pas


En supposant que tu parles bien d'une variable locale à une fonction, il
faut surtout que tu réfléchisses à où tu veux stocker cet objet :

  – Si tu le veux dans la pile (création et destruction automatiques
    quand tu rentres/sors du bloc),


        MatDoub A(2, 3);


  – Si tu veux l'allouer de façon statique (créé une fois pour toutes et
    gardé pour toute la durée de vie du programme),


        static MatDoub A(2, 3);


  – Si tu veux l'allouer dynamiquement (tu deviens responsable de sa
    destruction, et tu as une fuite mémoire si tu oublies de faire
    « delete ») :


        MatDoub *A = new MatDoub(2, 3);


    Note que dans ce dernier cas A n'est pas un objet mais un pointeur,
    tu accèdes donc aux méthodes avec A->methode() plutôt que
    A.methode().


La notation « MatDoub &A » sert a créer une référence, qui est une sorte
d'alias pour un objet existant. Ça ne t'aide pas si tu veux définir un
nouvel objet.

À+,

Edgar.