Problem mit Array als return wert
-
anonymus schrieb:
Kann dir zwar grad auch ned sagen, wieso da nur eins drinnen ist,
arrays hab ich bisher aber immer so zurückgegeben:public ref class foo { public: ... cli::array<int> ^ bar(...) { cli::array<int> ^ niceArray = gcnew cli::array<int>(25); return niceArray; } };
Das ist ein Tip, den mir anonymus in einem aelteren Thread gegeben hat- auf eine Frage, die ich hatte.
Jetzt ist es so, dass ich eine Funktion so umgeschrieben, dass sie als Rueckgabewert einen Array einer Struktur hat- also nach dem folgenden Muster:cli::array<VERWALTUNG>^ SetzeINTEGER(argumente........) { ... }
Das Problem ist jetzt nur, dass er mir einen Syntaxfehler fuer das ^ gibt- ich habe auch using namespace cli; benutzt- das Ganze ist aber nicht Teil einer Klasse sondern einfach nur eine Funtion in einer h-datei. Liegt das vielleicht daran?? Ich habe halt auch schon ausprobiert das ^ wegzulassen aber das mochte er dann wirklich ueberhaupt nicht und hat mir gesagt, dass er das SetzeINTEGER nicht kennt
Ich hoff eihr koennt mir helfen!!MfG Braunscheiger
-
Wie wärs mit Posten der Fehlermeldung ?
-
Fehlermeldung und bitte auch mal deine Struktur posten
-
Ohh Sorry!! Also die Fehlermeldung bei der "normalen" Version- also mit dem ^- war Syntaxfehler: ^ und die Struktur ist im Grunde genommen eine managed Struktur mit ein paar managed Arrays und ein paar anderen Variablen- die genaue Fehlermeldung und die Struktur kann ich leider erst heute abend posten!!
-
Geht das überhaubt? Einen Array zurrückgeben?
Ich hab das bis jetzt immer so gelößt:
Hier z.B. wandle ich einen String in einen Array um.
Die Funktion hat direkt Zugriff auf den Array und gibt am Ende die Anzahl der Buchstaben zurrück.Funktion:
int Misc::StrToCharArray(System::String * tempStr,char* CharArray) { int charsOfStr=tempStr->get_Length(); for (int i=0; i<charsOfStr; i++) CharArray[i]=static_cast<char>(tempStr->ToCharArray()[i]); CharArray[i]=0x00; return i; }
Aufruf:
Misc DoThis; char* TempCharArray = new char[128]; DoThis.StrToCharArray(this->label1->text->ToString(),TempCharArray);
-
www.pat schrieb:
Geht das überhaubt? Einen Array zurrückgeben?
public ref class foo { public: ... cli::array<int> ^ bar(...) { cli::array<int> ^ niceArray = gcnew cli::array<int>(25); return niceArray; } };
-
So hier sind jetzt also noch ein paar detailiertere Infos:
cli:array<VERWALTUNG>^ SetzeINTEGER(cli:array<VERWALTUNG> main, String^ name, int wert, int dimension1 = -1, int dimension2 = -1, int dimension3 = -1) { ... }
Das ist die Funktion, so wie ich sie aufrufe- eine nackte Funktion in einer H-Datei.
c:\project_advanced_scripting_language_interpreter\project_advanced_scripting_language_interpreter\structures.h(214) : error C2470: 'cli' : looks like a function definition, but there is no parameter list; skipping apparent body
c:\project_advanced_scripting_language_interpreter\project_advanced_scripting_language_interpreter\structures.h(214) : error C2059: syntax error : '^'Die Fehlermeldung dazu
value struct VERWALTUNG { String^ skriptname; String^ ruecksprungskript; String^ ruecksprungfunction; int ruecksprungline; int rang; int line; bool skriptaktiv; bool rootskript; array <BOOL> ^ boolvariablen; array <INTEGER> ^ integervariablen; array <FLOAT> ^ floatvariablen; array <STRING> ^ stringvariablen; }
Und zum Schluss noch die Struktur- ich hoffe igr koennt mir helfen mit diesem Problemchen!!
-
was mir gerade erst aufgefallen ist, ist, dass ich einen falschen Code gepostet habe- so solls richtig sein:
cli:array<VERWALTUNG>^ SetzeINTEGER(cli:array<VERWALTUNG> main, String^ name, int wert, int dimension1 = -1, int dimension2 = -1, int dimension3 = -1) { ... }
(habe ich oben schon berichtigt) Hat jetzt denn irgendwer dazu eine Idee??
-
Du hast doch in Deinem Crossposting eine Antwort erhalten