Variable aus externe datei includieren ?



  • Analyse schrieb:

    Wie soll das gehen wenn ich nur eine main() benutzen darf ?

    Objektorientierte Programmierung, Strukturierte Programmierung. Such’s dir aus. Und kauf dir ein vernünftiges C++ Buch. Aus gegebenem Anlass kann ich DAS HIER empfehlen.

    mfg, René~



  • so hat es leider auch nicht funktioniert "Lösung", bekomme obwohl ich in beiden .cpp dateien die header datei mit der deklaration einbinde ein "nicht deklariert" als fehlermeldung.

    Naja ich merke schon das ich die geduld von einigen hier langsam überstrapaziere 🙄

    Danke für den tipp Rene aber ich habe bereits ein c++ buch was sogar fast den gleichen titel hat, leider ist es eine qual mit diesen büchern, bis ich da mal was gefunden habe...(trotz inhaltsverzeichniss..)
    dachte eigentlich das ist hier schnell gelöst aber scheint ja nun nicht so zu sein.

    Danke an alle, ich werd mir jetzt doch nochmal das buch raussuchen und versuchen das alleine zu lösen.



  • Analyse schrieb:

    Danke für den tipp Rene aber ich habe bereits ein c++ buch was sogar fast den gleichen titel hat, leider ist es eine qual mit diesen büchern, bis ich da mal was gefunden habe...(trotz inhaltsverzeichniss..)

    lol! Um C++ zu lernen liest man das Buch auch von links nach rechts durch und springt da nicht im Buch drin rum weil man meint, dass man schon alles kann, aber dann nicht mal weiß was die Funktion main() macht..

    mfg, René~



  • Mal eine andere Sache. Eigentlich arbeitet man nicht mit globalen Variablen. Und wenn man das berücksichtigt, dann ergibt sich das Problem mit extern auch nicht.



  • ich geh da eher nach learning by doing, wenn ich das im buch mal lese, vllt. eine übungsaufgabe dazu mache ist es beim nächstenmal buchaufschlagen weg. :p

    Und da ich schon erfahrungen in anderen programmiersprachen habe und aktuell ein projekt in c++ realisieren will, wo es halt mal an der ein oder anderen stelle hakt da ich noch relativ neu in c++ bin such ich mir das halt im inet zusammen oder frag mal in der community nach.

    Mal eine andere Sache. Eigentlich arbeitet man nicht mit globalen Variablen. Und wenn man das berücksichtigt, dann ergibt sich das Problem mit extern auch nicht.

    Sondern dann mit funkionsaufrufen ? hab ich das wenigstes mitgenommen 😕 😮



  • Analyse schrieb:

    Sondern dann mit funkionsaufrufen ? hab ich das wenigstes mitgenommen 😕 😮

    Genau so. 🙂
    Ich weiß nicht was du genau vor hast, aber man kann dein Problem in etwa so angehen.

    // text.h
    #ifndef HEADER
    #define HEADER
    #include <string>
    
    // Prototypen zum Lesen und Schreiben
    void text_schreiben(std::string text);
    std::string text_lesen();
    
    #endif
    
    // text.cpp
    #include "text.h"
    
    static std::string mein_text;
    
    void text_schreiben(std::string text)
    {
        mein_text = text;
    }
    
    std::string text_lesen()
    {
        return mein_text;
    }
    
    // main.cpp
    #include <iostream>
    #include <ostream>
    #include "text.h"
    
    int main()
    {
        text_schreiben("Hallo du!");
        std::cout << text_lesen() << std::endl;
        return 0;
    }
    

    Wie du siehst ist der Text immer noch nicht wirklich gekapselt, wird aber schon mal auf das eine cpp-File durch die Eigenschaft static beschränkt. An der Stelle könnte man sich auch eine Klasse mit statischen Methoden erstellen und dann die Variable darin schützen. Was dann so aussehen würde.

    // text.h
    #ifndef HEADER
    #define HEADER
    #include <string>
    
    class Text
    {
        static std::string mein_text;
    public:
        static void schreiben(std::string text)
        {
            mein_text = text;
        }
        static std::string lesen()
        {
            return mein_text;
        }
    };
    
    #endif
    
    // main.cpp
    #include <iostream>
    #include <ostream>
    #include "text.h"
    
    int main()
    {
        Text::schreiben("Hallo du!");
        std::cout << Text::lesen() << std::endl;
        return 0;
    }
    

    Das kann man jetzt noch weiter treiben und daraus ein Singleton basteln, dass muss man aber einen Anfänger jetzt nicht unbedingt antun. Wenn du den Code aber verstanden hast, verstehst du auch ein Singleton. Wirklich wichtig hierbei ist die Bedeutung oder auch die verschieden Bedeutungen des Schlüsselwortes static . Je nach Kontext ist die Aussage nicht die gleiche.



  • Jetzt habe ich es endlich hinbekommen.

    Schönes beispiel, danke Nick.

    Ich arbeite mit CodeBlocks und hatte den build modus auf "Debug" stehen, weiss jetzt nicht was er da genau macht, anscheinend keine externen dateien einbinden .?

    Jedenfalls hat es wunderbar funktioniert als ich auf "Release" umgestellt habe 🙄

    Danke für eure hilfe.

    mfg Analyse



  • Analyse schrieb:

    Und da ich schon erfahrungen in anderen programmiersprachen habe und aktuell ein projekt in c++ realisieren will, wo es halt mal an der ein oder anderen stelle hakt da ich noch relativ neu in c++ bin such ich mir das halt im inet zusammen oder frag mal in der community nach.

    Egal, was du schon für Programmiersprachen kennst – C++ ist anders. Ich würde am besten von vorne anfangen mit lernen. Wenn du etwas schon kennst, kannst du es ja immer noch schnell überfliegen. Aber oft sind Dinge doch nicht genau so, wie du sie bereits kennst, von daher lohnt es sich, sie genau anzuschauen. Man sieht hier z.B. ab und zu Java-Programmierer, die glauben, sie könnten im Grossen und Ganzen wie gewohnt weiterprogrammieren. Doch die Programmierparadigmen unterscheiden sich fundamental, was auf den ersten Blick nicht ersichtlich ist.

    Und nein, Debug-Modus hat nichts mit externen Dateien zu tun, und diese haben nichts mit extern zu tun. Auch Dinge, die du beim sorgfältigen Studium eines Buchs lernen würdest.



  • Analyse schrieb:

    ich geh da eher nach learning by doing, wenn ich das im buch mal lese, vllt. eine übungsaufgabe dazu mache ist es beim nächstenmal buchaufschlagen weg. :p

    Und da ich schon erfahrungen in anderen programmiersprachen habe und aktuell ein projekt in c++ realisieren will, wo es halt mal an der ein oder anderen stelle hakt da ich noch relativ neu in c++ bin such ich mir das halt im inet zusammen oder frag mal in der community nach.

    ...

    Sowas freut einen richtig - gesunde Einstellung. Warum sollte ich ein Buch lesen - viel zu anstrengend. Ich kopier mir einfach n bisl code ausm Internet zusammen und schau mal obs läuft.
    Ich versteh zwar nichtmal wofür ich ne main-Funktion brauch, aber es gibt ja glücklicherweise genug Leute, die n Buch gelesen haben. Die können mir das dann erklären und ich hab Zeit gespart.

    *thumbs up*

    Achja: Wenn alle Stricke reissen wechsel ich von Debug einfach auf Release 😃


Anmelden zum Antworten