Begrenzung bei Übergabe an andere Klasse/Dialog?

GuenterMies

Grünschnabel
Hallo Leute,

habe ein Problemm mit der Übergabe mehrerer Matrizen aus einer Klasse in die nächste.
Und zwar lege ich mir innerhalb einer Klasse X eine dynamische Matrize M1 an welche ca. 300*40 Komponenten besitzt.
Zusätzlich zu dieser lege ich mir noch eine identische Matrize M2 an.
Beide lege ich im Sourcecode direkt hintereinander an.

Nun übergebe ich die Pointer auf diese Matrizen an einen nachfolgenden Dialog.
Code:
CDialog2 set; 
set.m_M1    = m_M1; 
set.m_M2    = m_M2; 
set.DoModal();


Leider funktioniert das Programm in dieser Art nicht einwandfrei. Es würfelt mir irgendwie den Inhalt einer dieser Matrizen. Ich kann nicht genau sagen welche, da ich beide am Ende meiner Methoden wieder gleichsetze. Ich benötige die M1 als nicht zu änderndes Original und arbeite mit der M2.

Besorge ich den Speicher für die 2te Matrize jedoch in meiner Klasse "Dialog2" so funktioniert der Code einwandfrei.
Ich habe sonst definitiv nichts geändert.

Hier mein Code um den Speicher zu besorgen:
Code:
    for ( i=0;i<m_M2;i++)    //   
    { 
        m_M2[i] = new CString[m_spalten]; 
    }

Also diese paar Zeilen (es gehören noch Messageboxes dazu, welche ausgegeben werden wenn kein Speicher besorgt werden konnte) schiebe ich einfach in die Methode meiner 2ten Klasse, wo ich die M2 dann benötige. Und schon ist men Problemm behoben, das Programm funktioniert.

Ich lege weiterhin meine Matrize in der vorigen Klasse an, besorge aber dort NICHT den Speicher. Dies ist der Unterschied zwischen einer funktionierenden und einer beschi..enen Software.
Hat wer ne Ahnung woran das liegen könnte?
Ach ja: es gibt keinen Absturz des Programms...nur ein Würfeln der einzelnen Zeilen der Matrize.

Ich habe auch schon die M1 doppelt so gross gemacht und anstatt Speicher für die M2 zu besorgen die Inhalte welche für M2 gedacht waren in die neue 2te Hälfte der M1 reingepinnt.
Funktioniert einwandfrei.
Würde mich dennoch SEHR interessieren warum es nicht mit 2 Matrizen geht
Compilerfehler

Gruss
Günni
 
Da kann ich mir eine Menge Ursachen vorstellen. Was nun der Grund für den Fehler ist, wird man ohne weitere Informationen nicht herausfinden.

Das ist jedenfalls nicht richtig:
Code:
for ( i=0;i<m_M2;i++)
Das sollte der Compiler überhaupt nicht annehmen. Wie kannst du i mit m_M2 vergleichen? Die beiden haben unterschiedliche Datentypen. Ist das in deinem Code auch so?
 
UI...FEHLER

hast recht...habe die originalen bezeichner ersetzt gegen M1 und M2

habe da wohl zuviel ersetzt ;-)

richtigerweise ist es natuerlich die anzahl zeilen die da hinghoert

danke
 
Zurück