String an eine Funktion in einer Klasse übergeben
-
Hallo Leute,
ich habe eine Klasse erstellt und möchte an eine Funktion der Klasse einen String übergeben, in der dann der String evt. bearbeite aber auch angezeigt wird. Leider gibt er mir den Fehler: Sytnaxfehler: "String" aus.
Wird der String in einer anderen Form übergeben, oder muss ich noch einen anderen Header als nur "String.h" einfügen? Oder hab ich hier grad einen Denkfehler?Main:
... TestKlasse * myKlasse; myKlasse = new TestKlasse(); String* test= S"Hallo Welt"; myKlasse->PrintStringValue(test); ...
Klasse (.cpp):
#include "String.h" ... void TestKlasse::PrintStringValue(String* testValue) { Console::WriteLine(testValue); } ...
Würde mich freuen, wenn mir jemand auf die Sprünge helfen könnte!
-
WAS hast Du denn für Ein Projekt?
WELCHE VS-Version hast Du?Includiere mal *keine* "String.h" und schreib ersetze "String*" durch "String^".
-
Habe ein Win32-Konsolenprojekt. Nutze VisualC++ in VS.NET 2003.
String^ ist ihm somit nicht bekannt.
-
Auch wenn's Visual Studio .NET ist, ist ein Win32-Projekt noch lange nicht in C++/CLI verfasst
(EDIT: Und unter Win32 mit C oder C++ gibt es auch garkeine Klasse String. Woher hast Du die?)
-
Axel_M0310 schrieb:
Habe ein Win32-Konsolenprojekt. Nutze VisualC++ in VS.NET 2003.
String^ ist ihm somit nicht bekannt.Dann lass einfach das "include" weg.... und poste nächstesmal die *genaue* Fehlermeldung!
-
Wohin sollte ich meinen Beitrag sonst posten? Im Unterforum "Programmiersprachen->C++" bin ich auf dieses Unterforum verwiesen worden.
Das Projekt ist eine "verwaltete C++ Anwendung" in VS.NET 2003.
Habe jetzt #include "String.h" auskommentiert und String* mit String^ ersetzt.Folgende Fehler treten auf:
1-> Syntaxfehler: Bezeichner 'String'
2-> Ungültige Verwendung des verwalteten Typs 'System::String'; haben Sie eine '*' vergessen?
3-> Syntaxfehler: Es fehlt ')' vor '^'
4-> Syntaxfehler: Es fehlt ';' vor '^'Liege ich vielleicht auf dem falschen Weg? Wie würdet ihr einen String (kein char!) an einen Funktion einer Klasse übergeben?
-
In VS2003 gibt es keine ^, der spaß kam erst später, mit VS2005.
System::String* wäre da schon richtig. Poste bitte die Fehlermeldung von deinem ersten Post.
-
Hier sind die Fehlermeldungen, wenn "#include 'String.h' wieder drin ist und ich String* statt String^ benutze:
1->Syntaxfehler: Bezeichner 'String' 2->PrintStringValue(System::String __gc *)': Überladene Memberfunktion nicht in 'TestKlasse' gefunden
Er kreidet damit die Funktionsdeklarationen im der Header und in Quelldatei an.
3-> 'TestKlasse::PrintStringValue': Funktion akzeptiert keine 1 Argumente
Fehler bezieht sich auf den den 1. Funktionsaufruf der Funktion aus der Klasse.
-
Hallo,
wie ist denn die Funktion im Headerfile der Klasse deklariert?
Gruss
foodax
-
void PrintStringValue(String* testValue);
-
Es scheint ein wenig so zu sein, das es (woher auch immer) noch eine Klase gibt die String heisst. Versuche mal String explizit durch System::String anzusprechen.
-
HURRA! HURRA! Ja, es war nur das einzelne Wort "System::". Mit "System::String*" in der Funktionsdeklaration in der Headerdatei der Klasse hat es dann geklappt!
Vielen Dank Knuddelbaer und euch anderen fürs aktive mithelfen! Vielen DANK!