Aufrufen einer Funktion von einer anderen classe



  • C:/.../.../src/anderedatei.cpp:31: multiple definition of `logger'



  • Soljer schrieb:

    C:/.../.../src/anderedatei.cpp:31: multiple definition of `logger'

    Code dazu bitte.
    Ich rate mal: Du verwendest globale Variablen. Und das auch noch falsch.



  • Das bedeutet, du hast Logger mehrmals definiert. Man darf nur einmal definieren, deklarieren darfst du mehrmals. Da wo du Logger nutzen willst, musst du nur die Header-Datei, also die Deklaration, inkludieren. Dann kannst du in deinen anderen Klassen auch die Logger Klasse einbauen und nutzen. Vielleicht magst du noch mehr Code posten, denn raten ist immer so ne Glückssache?



  • Ich versteh nicht, was jetzt das Problem sein soll. Funktioniert doch einwandfrei:

    #include <iostream>
    #include <string>
    
    class Logger {
    public:
        static void info(const std::string& message)
        {
            // weiß jetzt nicht, ob std::endl hier tatsächlich sinnvoll wäre
            std::cout << "[INFO] " << message << '\n';  
        }
    };
    
    class Foo {
    public:
        Foo() { Logger::info("Foo instance created."); }
    };
    
    int main()
    {
        Logger::info("Program started.");
        Foo myFoo;
    }
    


  • Ja, das wäre dann die Version mit statischer Methode, wo zu deren Nutzung kein Objekt extra instanziert werden muss. Mich würde aber auch mal interessieren womit er jetzt noch Probleme hat. Ich vermute mal die Grundlagen sitzen da noch nicht so richtig und die sollte er mit Minimalbeispielen trainieren, also alles was nicht zum Problem gehört isolieren.


Anmelden zum Antworten