[C/C++] Klasse rückgabewert???

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Epidrome, 18. Dezember 2009 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 18. Dezember 2009
    Klasse rückgabewert???

    Hallo,
    wie kann ich ein wert zurück geben.
    Haber meine Unit1.cpp und .h im Borland.
    Jetzt habe ich eine eigene Class programmiert und
    in public meine Methode definiert:
    Code:
    class Test
    ....
    public:
     static void meine_methode();
    
    usw..
    
    Jetzt will ich in Unit1.cpp
    Code:
    String x;
    x = Test::meine_methode();
    
    und mein wert in x speichern.
    Kann mir bitte einer erklären wie das geht, habe leider eine Wissenslücke.

    Danke.
     
  2. 18. Dezember 2009
    AW: Klasse rückgabewert???

    Statt void musst du in der Deklaration der Methode String verwenden und die Methode ausprogrammieren:

    Code:
    class Test
    {
     public:
     static [B]String[/B] meine_methode();
    };
    
    [B]String Test::meine_methode()
    {
     return "Das ist ein String...";
    }[/B]
     
  3. 18. Dezember 2009
    AW: Klasse rückgabewert???

    Hi,
    der gibt mir bei der
    Code:
    static String meine_methode();
    ein Fehler aus: [C++ Fehler] funktionen.h(13): E2139 In Deklaration fehlt ;
     
  4. 18. Dezember 2009
    AW: Klasse rückgabewert???

    string und nicht String

    dazu den namespace std verwenden oder std::string schreiben.
    der header dazu ist <string>

    Code:
    #include <string>
    using namespace std;
    
    string methode() { 
     string s = "hallo welt";
     return s;
     
     //return "hallo welt"; -> sollte nicht klappen, da das ein const char* wär (sei froh das c++ sowas wie "string" hat!)
    }
    bez.:

    Code:
    #include <string>
    #include <iostream>
    
    using namespace std;
    
    class Test
    {
     public:
     static string meine_methode();
    };
    
    string Test::meine_methode()
    {
     string s("Das ist ein String...");
     return s;
    }
    
    
    int main(void) { 
     cout << Test::meine_methode() << endl;
     return 0; 
    }
     
  5. 18. Dezember 2009
    AW: Klasse rückgabewert???

    Gleiche Fehlermeldung.
    Sorry nur zu Info ich habe eine Extra header und cpp datei für meine Klasse.
    erweiterung.h
     
  6. 18. Dezember 2009
    AW: Klasse rückgabewert???

    nein, habs eben durch g++ gejagt und ausgeführt. dann machst du was falsch.

    fehler können sein: du programmierst vc++ (.NET), oder nimmst als compiler gcc.
     
  7. 18. Dezember 2009
    AW: Klasse rückgabewert???

    Ich glaube ich habe was falsch verstanden.
    Muss ich
    Code:
    class Test
    {
     public:
     static string meine_methode();
    };
    
    in test.h tun oder in test.cpp
    Weil in test.h gibt er mir fehler aus in test.cpp nichts.
    Habe Komplett Neu gemacht.
    Hier der code:
    Code:
    //---------------------------------------------------------------------------
    
    #ifndef Unit3H
    #define Unit3H
    //---------------------------------------------------------------------------
    class Test
    {
     public:
     static string meine_methode();
    };
    #endif
    Borland Dev C++ 2006.
     
  8. 18. Dezember 2009
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Klasse rückgabewert???

    ka, so funktionierts:

    test.hpp
    Code:
    #ifndef TEST_HPP
    #define TEST_HPP 1
    using namespace std;
    
    class Test
    {
     public:
     static string meine_methode();
    };
    #endif
    
    test.cpp
    Code:
    #include <string>
    #include <iostream>
    #include "test.hpp"
    
    using namespace std;
    
    string Test::meine_methode()
    {
     string s("Das ist ein String...");
     return s;
    }
    
    
    int main(void) { 
     cout << Test::meine_methode() << endl;
     return 0; 
    }
    
    Code:
    g++ -o test.exe test.cpp
    No File | xup.in
     
  9. 18. Dezember 2009
    AW: Klasse rückgabewert???

    Die Deklaration (der Teil, der mit "class Test ..." anfängt) kommt in die .h.

    Dann so (mit "using namespace std"):

    .h:
    Code:
    #ifndef Unit3H
    #define Unit3H
    
    [B]using namespace std;[/B]
    
    class Test
    {
     public:
     static [B]string[/B] meine_methode();
    };
    #endif
    .cpp:

    Code:
    [B]#include <iostream>[/B]
    [B]using namespace std;[/B]
    
    [B]string[/B] Test::meine_methode() { return "irgendwas"; }
    oder so, ohne:

    .h:
    Code:
    #ifndef Unit3H
    #define Unit3H
    //---------------------------------------------------------------------------
    class Test
    {
     public:
     static [B]std::string[/B] meine_methode();
    };
    #endif
    .cpp:

    Code:
    [B]#include <iostream>[/B]
    [B]std::string[/B] Test::meine_methode() { return "irgendwas"; }
     
  10. 18. Dezember 2009
    AW: Klasse rückgabewert???

    Unit1.cpp
    Code:
    #include <vcl.h>
    #pragma hdrstop
    
    #include "Unit1.h"
    #include "Unit3.h"
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
     : TForm(Owner)
    {
    }
    Unit3.h
    Code:
    //---------------------------------------------------------------------------
    
    #ifndef Unit3H
    #define Unit3H
    //---------------------------------------------------------------------------
    using namespace std;
    class Test
    {
     public:
     static string meine_methode();
    };
    #endif
    
    Unit3.cpp
    Code:
    //---------------------------------------------------------------------------
    
    
    #pragma hdrstop
    
    #include "Unit3.h"
    #include "Unit1.h"
    //---------------------------------------------------------------------------
    
    #pragma package(smart_init)
    using namespace std;
    
    string Test::meine_methode()
    {
     string s("Das ist ein String...");
     return s;
    }
    Gleiche Fehlermeldung. Sage mir bitte das da kein Fehler ist. Dann ist die Sache für mich erledigt. Dann kommen die bewertungen raus und ich schliesse das ab.
     
  11. 18. Dezember 2009
    AW: Klasse rückgabewert???

    #include <string> fehlt, vielleicht schmeißt dev c++ das ned automatisch mit rein beim übersetzen. (linker fehler)

    hilfreich wär auch die fehlermeldung die der ja dem anschein nach jedes mal gleich ausgibt ^^
     
  12. 18. Dezember 2009
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: Klasse rückgabewert???

    Hier was bei mir nicht läuft:
    No File | xup.in
     
  13. 18. Dezember 2009
    AW: Klasse rückgabewert???

    sorry, hab den ganzen .NET scheissdreck ned ^^
     
  14. 19. Dezember 2009
    AW: Klasse rückgabewert???

    Jo Borland Dev c++ 2006. Habe den Fehler raus bekommen. Ist ein F*** Bug.
    E2139 bug im compiler, heisst es.
    Trotzdem Danke für die Infos. Bewertungen gehen jetzt raus.
     
  15. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.