Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Matrix - Rückgabewert problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
11.04.2006, 16:13 Uhr
Drager



hoi,

ich steh grad a weng aufn schlauch, ich hab ne matrix klasse geschrieben, mit beliebiger spalten , zeilen grösse --> dynamischer speicher

so jetzt hab ich aber folgendes problem bei z.b. der addition (von z.b. 2 quadratischen gleichgrossen matrizen):


Code:

template<class T>
inline Matrix<T> Matrix<T>::operator+(Matrix<T>& mat1)
{

    Matrix<T> buffer(height,width);

    for(unsigned int i = 0; i < height; ++i)
    {
        for(unsigned int k = 0; k < width; ++k)
        {

            buffer.mat[i][k] = mat[i][k] + mat1.mat[i][k];

        }
    }

    return buffer;

}



ich benutze also eine buffer um das zwischenergebnis zu speichern,
dass problem ist aber das buffer ja eine lokale variable ist.

nun hab ich eigendlich gedacht, dass er erst den inhalt von buffer in den rückgabe wert kopiert und erst dann buffer zerstört,
aber anscheinent ist das nicht der fall...
(hab mir buffer ausgeben lassen vor return, und den rückgabe wert auch und diese unterscheiden sich, desweitern habe ich auch den "=" operator überladen, dass er auch wirklich den speicher kopiert und net nur die adressen von den zeigern..
also sollte an sich im rückgabewert (bentutz dieser den "=" operator?) auch das richtige stehn)

und da er nun erst den destruktor (freigabe des dynamischen speichers) von buffer aufruft, steht da natürlich nix mehr sinnvolles im rückgabewert drin...
jetzt frag ich mich wie ich das sinnvoll machen kann, oder hab ich da irgendwo nen fehler?

danke

Michi

Dieser Post wurde am 11.04.2006 um 16:15 Uhr von Drager editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
11.04.2006, 18:12 Uhr
Drager



ha

oki hat sich erledigt, hatte vergessen den copy constructor zu überladen :-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: