Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » nicht aufgelöstes Smybol by Singleton

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
29.10.2015, 11:40 Uhr
Ginso



Hallo, ich möchte ein Singleton prommarien. Hier ist mein Code:

Header:

Code:
#pragma once
#include <stdio.h>


class MLog
{
public:
    
    MLog(void);
    ~MLog(void);
    static MLog* getInstance();
    FILE* file;
    
    template <typename ... Ts>
    void writef(const char* format, Ts ... ts)
    {
        fprintf(file,format,ts...);
    }

    /*template <typename ... Ts>
    static void write(const char* format,Ts ... ts)
    {
        getInstance()->writef(format, ts...);
    }*/
protected:
    static MLog* s_instance;
};


source:

Code:
#include "MLog.h"

MLog::MLog(void)
{
    file = fopen("D:\\Temp\\log.txt","W");
}


MLog::~MLog(void)
{
    fclose(file);
}

MLog* MLog::getInstance()
{
    if(!s_instance) s_instance = new MLog();
    return s_instance;
}


Beim Erstellen erhalte ich folgenden Fehler:

error LNK2001: Nicht aufgelöstes externes Symbol ""protected: static class MLog * MLog::s_instance" (?s_instance@MLog@@1PAV1@A)".
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.10.2015, 12:56 Uhr
Tommix



Hallo,
Du hast s_instance nicht deklariert:

C++:
MLog* MLog::s_instance = 0;


Außerdem sollte der Konstruktor nicht public sein, sonst ist es nicht wirklich ein Singleton.

Gruß,
Tommix

Dieser Post wurde am 29.10.2015 um 12:56 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: