String an eine Funktion in einer Klasse übergeben



  • 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! 🙂


Anmelden zum Antworten