Globales Objekt



  • Hi,

    habe mir eine Klasse für ein Message Handling System zusammengebastelt. Wo überall im Programm verbose error oder info msg ausgegeben werden können.
    Jetzt wollte ich davon ein globales Objekt erstellen hab das in meine common.h reingeschrieben welche jede Datei includet:

    #ifndef COMMON_H
    #define COMMON_H
    
    #include "error.h"
    #include "message.h"
    #include <string>
    #include <iostream>
    
    CMessageHandling report;
    
    #endif
    

    jetzt kommt natürlich beim linken viele Fehler das report schon definiert sei. Wie kann ich das verhindern oder sollte ich vielleicht doch besser keine Klasse erstellen und Funktionen daraus machen?

    MfG
    xmarvel



  • In der Header Datei darf nur die Variable bekannt gemacht werden:

    #ifndef COMMON_H
    #define COMMON_H
    
    #include "error.h"
    #include "message.h"
    #include <string>
    #include <iostream>
    
    extern CMessageHandling report;
    
    #endif
    

    Die Deklaration muss dann in einer (und nur einer) cpp-Datei erfolgen (üblicherweise wäre das bei Dir common.cpp).
    Alternativ kannst Du auch ein Singleton statt der globalen Variable verwenden.



  • thx so funktioniert es 👍



  • niemand schrieb:

    Die Deklaration muss dann in einer (und nur einer) cpp-Datei erfolgen

    Definition



  • groovemaster schrieb:

    niemand schrieb:

    Die Deklaration muss dann in einer (und nur einer) cpp-Datei erfolgen

    Definition

    http://www.slowfood.ch/bilder/erbsen.jpg


Anmelden zum Antworten