CString wird nicht übergeben



  • Hallo zusammen, ich habe folgendes Billigprogramm geschrieben:

    #include "stdafx.h"
    #include <cstring>
    #include <iostream>
    #include "atlstr.h"

    using namespace std;

    class warumklapptsnicht {

    public:

    CString ruf;

    void rufen(CString);

    };

    void warumklapptsnicht::rufen(CString test) { cout << test;};

    void guckindieluft (CString a) { cout << a; }

    int _tmain(int argc, _TCHAR* argv[])
    {

    warumklapptsnicht daniel;
    daniel.ruf="hui";
    daniel.rufen("teasdfst");

    guckindieluft("luft");

    return 0;
    }

    Problem: Statt des Inhalts von test respektive a wird immer eine 8stellige Zahlenkombination ausgegeben. Woran könnte das liegen? Header falsch eingebunden, oder kann man CString-Objekte grundsätzlich nicht als Parameter übergeben? MSDN ist leider keine Hilfe

    Viele Grüße

    Daniel



  • Hm, weil cout nicht mit Objekten des Typs CString umgehen kann?
    Es gibt Dir die Adressen der Objekte zurück.

    Probier mal folgendes:

    cout << test.GetString;
    cout << a.GetString;
    


  • gibt ebenfalls die adresse zurück, eine möglichkeit wie ich das mit printf ausgeben kann? danke!



  • Sollte wohl "GetString()" heißen (fehlende "()")



  • hatte das schon miteinkalkuliert und stillschweigend korrigiert, sonst kompiliert er erst gar nicht, aber es kommt nur die Adresse, nicht der Inhalt...



  • gibt ebenfalls die adresse zurück, eine möglichkeit wie ich das mit printf ausgeben kann? danke!

    Wie wärs mit

    printf("%s",ruf);
    


  • Thema zum Nachschlagen: Überladen von Operatoren, in dem Fall Operator '<<' ist schuld. Für Ihn ist Adresse von Objekt von CString passende Operator.
    Mit z.B "cout << ( LPCTSTR ) test;" soll es gehen.


  • Mod

    Fiesek schrieb:

    Hm, weil cout nicht mit Objekten des Typs CString umgehen kann?
    Es gibt Dir die Adressen der Objekte zurück.

    Probier mal folgendes:

    cout << test.GetString;
    cout << a.GetString;
    

    Müsste heißen:

    cout << test.GetString();
    cout << a.GetString();
    


  • Hi,

    void guckindieluft (CString a) { cout << a; }
    ...
    guckindieluft("luft");

    Ich hab das mal getestet aber bei mir geht das ohne Probleme mit Textausgabe.

    CallStack:
    std::basic_ostream<char,std::char_traits<char> >::sentry::sentry(_Ostr={...})
    std::operator<<<std::char_traits<char> >(_Ostr={...}, _Val=0x00358c70)
    guckindieluft(a="luft") Line 25 + 0x62 bytes C++ main(argc=2,

    Gruß Charlie

    Microsoft Visual Studio 2005
    Version 8.0.50727.762 (SP.050727-7600)
    Microsoft .NET Framework
    Version 2.0.50727 SP1
    Installed Edition: Professional
    Microsoft Visual Studio 2005 Professional Edition - ENU Service Pack 1 (KB926601)
    Security Update for Microsoft Visual Studio 2005 Professional Edition - ENU (KB937061)


Anmelden zum Antworten