Announcement

Collapse
No announcement yet.

Singleton

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Singleton

    Hallo,

    versuche mich gerade an einem Singleton im BCB 6.0
    HeaderFile:
    <B>class LogFile
    {
    private:
    LogFile()
    {
    ...
    }
    static bool instanceFlag;
    static LogFile *log;
    public:
    static LogFile* GetInstance();
    ~LogFile()
    {
    ...
    }

    }
    </B>

    Implementation:
    <B>LogFile *LogFile::GetInstance()
    {
    if(! instanceFlag)
    {
    log= new LogFile();
    instanceFlag=true;
    }
    return log;
    }</B>
    dabei erhalte ich folgenden Fehler
    <B> E2247 Zugriff auf LogFile::LogFile() nicht möglich</B>
    Mit ist nicht klar wo mein Fehler ist!

  • #2
    Dein Konstruktur ist private, der muß aber public sein.

    Grüße,

    Joche

    Comment


    • #3
      Ist das nicht notwendig um einen Singleton zu implementieren , sonst kann man ja doch x Instanzen bekommen durch ein einfaches
      <B>LogFile* my Log= new LogFile();</B>
      Ziel ist doch aber, daß jeder Verweis auf die selbe Instanz geht.
      Gruß Jör

      Comment


      • #4
        Hallo Jörg,

        auf den privaten Konstruktor kannst Du von außen nicht zugreifen- was ja auch Sinn und Zweck der Übung ist: Die (einzige)Instanz bekommtst Du über die GetInstance-Methode

        LogFile* myLog = LogFile::GetInstance();

        Möglich, dass sich ein Syntax-Fehler eingeschlichen hat- ganz so sattelfest bin ich in c++ nicht.

        Viele Grüße Hans-Pete

        Comment


        • #5
          ok, dass mit Singleton habe ich wohl irgendwie überlesen.

          Wo und wie wird denn die Fehlermeldung ausgegeben

          Comment


          • #6
            Der Fehler tritt bereits auf wenn ich das Unit compiliere. und verweißt auf die Zeile:

            <B>LogFile *LogFile::GetInstance() </B&gt

            Comment


            • #7
              Sorry ,
              Fehler lag im Headerfile.
              Semikolon zum Abschluß der Klassendeklaration hat gefehlt.
              Danke für eure Bemühungen

              Comment

              Working...
              X