• 07.06.2024, 22:27
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

[C++] Dynamische Parameterübergabe

Samstag, 7. Februar 2004, 21:35

Hi!

Ist es wahr, dass das nicht mit Klassen funktioniert?

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void function(int no, CClass object, ...)
{
      CClass * temp = new CClass[no];
            
      temp[0] = object;

      va_list arglist; 
      va_start(arglist, object);

      ...

      va_end(arglist);

      delete [] temp;
}


Wenn nein, was muss man bei den Klassen beachten? Ich bekomms nämlich nich hin. Mein Programm schmiert mir immer aufs böseste ab.

MfG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.

Re: [C++] Dynamische Parameterübergabe

Sonntag, 8. Februar 2004, 02:47

Hi Saiyaman,

soweit ich das sehe versuchst Du eine bereits angelegte Klasse mit einer anderen zu überschreiben. Und das gibt natürlich Probleme, spätestens dann, wenn das 'delete' kommt. Damit würdest Du auch die orginale 'object' löschen.
Versuche mal die Übergabe eines Klassenpointers.
Z.B. CClass * object
Ich kann mir vorstellen, daß das eher damit funktioniert.
Allerdings habe ich diesen Fall bisher noch nicht benötigt und somit auch keine praktische Erfahrung mit der 'Dynamischen Übergabe'.

mfg,
cobra224

Re: [C++] Dynamische Parameterübergabe

Sonntag, 8. Februar 2004, 12:07

Es ist doch aber so, dass temp[0] bis temp[no] alles "neue" CClass-Objekte auf dem Heap sind.

In der Zeile: temp[0] = object; wird doch lediglich das object-Objekt in das temp[0]-Objekt kopiert. Oder irre ich mich da?

Es kann sein, dass ich einen wichtigen Denkfehler drin habe.

Erstmal muss ich jedoch die dynamischen Parameter als Referenz übergeben (CClass & object, ...).

Hmm... das einzige was ich dann noch brauch, ist ein Array von Zeigern in der Funktion, welche auf die einzelnen Parameter verweisen.

MFG
"I've always said, the Web is the sum of all human knowledge plus porn.", Ron Gilbert
UltraStar Manager 1.7.2 | Infos zu meinem PC | .o0 DeathSpank 0o.