Probleme Singleton



  • nope nur 1 einzige 😞
    EDIT:
    die folgende Zeile auf die oben gepostete Fehlermeldung

    'int (void)' differs in levels of indirection from 'class LogContainer &(void)'
    


  • LogContainer::getInstance.tueirgendwas(para1,para2);
    

    sollte wahrscheinlich

    LogContainer::getInstance[b]()[/b].tueirgendwas(para1,para2);
    

    sein.
    Kurt



  • Wie schaut der Aufruf genau aus?



  • Erstmal hast du dort beim Aufruf die Klammern vergessen. Und zweitens: Zeig doch mal die Definition (Funktionsrumpf) der getInstance()-Funktion.



  • ZuK schrieb:

    LogContainer::getInstance.tueirgendwas(para1,para2);
    

    sollte wahrscheinlich

    LogContainer::getInstance[b]()[/b].tueirgendwas(para1,para2);
    

    sein.
    Kurt

    Hmmm...ja das wollt ich gar nicht anmerken, denn er schrieb "in der Form" und
    da bin ich schon davon ausgegangen, dass er das so gemacht hat 😉

    Aber gut, das waere eine Fehlerquelle, wenn ich auch denken wuerde, er wuerde
    hier einen anderen Fehler generieren.

    gruss
    v R



  • virtuell Realisticer schrieb:

    Aber gut, das waere eine Fehlerquelle, wenn ich auch denken wuerde, er wuerde
    hier einen anderen Fehler generieren.

    Ja, denn diese Fehlermeldung sagt deutlich, dass eine "int getInstance()" und eine "LogContainer& getInstance()" sich nur durch den Return-Typ unterscheiden, was voraussetzt, dass es eine "int getInstance()" gibt (und wenn auch nur durch einen blöden Vertipper) 😉



  • die Klammern waren nur ein Tippfehler 🙂

    LogContainer::getInstance().tueirgendwas(para1,para2);
    

    um alle (Un)Klarheiten zu beseitigen 😃

    static LogContainer theInstance;
    return theInstance;
    

    ist der Funktionsrumpf



  • Brok3r schrieb:

    static LogContainer theInstance;
    return theInstance;
    

    ist der Funktionsrumpf

    Ja, es heißt zwar immer, man sollte das Problem auf ein Minimum reduzieren - aber man kann's damit auch überteiben 😃
    (die Fehlermeldung aus dem Eingangspost deutet darauf hin, daß du bei der Definition vergessen hast, den Rückgabetyp anzugeben - es ist zwar illegal unter C++, aber manche Compiler schlucken sowas noch aus Kompatibilitätsgründen)



  • Leider habe ich den Rückgabetyp richtig angegeben

    LogContainer & LogContainer::getInstance() {
        //operation getInstance() 
        static LogContainer theInstance;
        return theInstance;
    }
    

    LordJaxom schrieb:

    virtuell Realisticer schrieb:

    Aber gut, das waere eine Fehlerquelle, wenn ich auch denken wuerde, er wuerde
    hier einen anderen Fehler generieren.

    Ja, denn diese Fehlermeldung sagt deutlich, dass eine "int getInstance()" und eine "LogContainer& getInstance()" sich nur durch den Return-Typ unterscheiden, was voraussetzt, dass es eine "int getInstance()" gibt (und wenn auch nur durch einen blöden Vertipper) 😉

    es gibt aber nur eine getInstance() Methode und diese liefert den oben beschriebenen Rückgabetyp



  • Brok3r schrieb:

    es gibt aber nur eine getInstance() Methode und diese liefert den oben beschriebenen Rückgabetyp

    Das passt aber nicht zur Fehlermeldung. Die sagt, du hättest auch eine getInstance-Methode, die int zurückgibt und nicht static ist.

    Zeig bitte ein vollständiges Minimalbeispiel, das den Fehler reproduziert.


Anmelden zum Antworten