Array an eine Methode übergeben
-
Hallo,
ich habe per "CStringArray test" ein Array erstellt und möchte dieses an eine Methode "Testmethode(CStringArray array)" übergeben: Testmethode(test).
Bei "normalen" C++ Arrays funktioniert das doch auch, warum bringt er bei CArray den Fehler: Konvertierung des Parameters 1 von 'class CStringArray' in 'class CStringArray' nicht moeglich. Kein Kopierkonstruktor fuer class 'CStringArray' verfuegbar?! Wie kann ich es dennoch übergeben??
Big THX!!
-
Übergibs per Referenz
-
Also in diesem Sinne:
Testmethode(CStringArray* array)
Testmethode(&test)?!
Dann kann ich irgendwie in der Testmethode weder per test.GetSize() noch per &test.GetSize() auf das Array zugreifen??!
-
TestMethode(CStringArray* array) { array->GetSize(); ... }arbeitest Du direkt mit einer Instanz dann quotest Du Dich mit "." durch.
arbeitest Du mit einem Zeiger auf ein Objekt, dann per "->"
-
danke, hat super funktioniert! jetzt hab ich nur noch ein problem: wie kann ich ein array vom typ double konstruieren??
-
statisch (feste Anzahl)
double MyDoubleArray[100];dynamisch über das CArray-Template
(#include <afxtempl.h>)// Definition Deiner ArrayVar CArray<double, double> MyDoubleArray;Der erste Parameter gibt den Typ an - also Double
Der zweite Parameter gibt die Art der Wertübergabe an (im Beispiel als Wert)
(Möglich ist auch eine Referenz: CArray<double, &double> MyDoubleArray;)Die Funktionen dafür (Add, GetAt, ...) findest Du in der MSDN unter "CArray" -> members
-
danke, aber leider funktioniert damit folgendes nicht:
CArray<double,double> myArray[145][2]={{1.2,3.4,},{4.5,4.3}...};ich muß das aber über CArray machen, da ich die Größe des Arrays per GetSize() bestimmen will, also fällt
double myArray[145][2]=...weg!
-
Uiii

Voll daneben
Also Du musst Dich erstmal entscheiden, benötigst Du überhaupt ein dyn Array?
Du willst das Array ja sofort mit Werten initialisieren.
Kommen da noch Werte hinzu oder bleibt es bei denen die initialisiert werden?
Bewegt sich Dein Array innerhalb von einer festen Obergrenze?PS: Zu CArray erstmal folgendes:
CArray<double,double> myArraySo wird ein CArray definiert. Und nix weiter mit =, etc... (das ist ein Template!!!)
Wenn Du Werte hinzufügen möchstest, dann benutze anschließend myArray.Add(...) oder InsertAt() oder ... -> siehe MSND!
-
ich brauche nicht unbedingt ein dyn. array, aber ich brauche unbedingt die länge des arrays, da eine schleife darüber laufen soll. ich kann zwar das array mit -1 abschließen und so die schleife beenden, aber eine funktion ala GetSize() wär schon super!
-
Wenn Du nicht unbedingt das dynamische brauchst, dann nimm lieber die einfachere Variante.
Die kannst Du dann auch in der Form initialisieren, wie Du es vor hattest.GetSize von CArray macht nix anderes als einen internen Zähler zurückliefern.
Also lege Dir noch eine int-Variable an, die die Größe beinhaltet.int ArraySize;Und die kannst Du dann wie GetSize benutzen.