`Undefined reference` do statycznego wskaźnika w modułach

0

Witam. Mam następujący problem. Mam klasę Utils, która posiada metodę i statyczny wskaźnik na fstream. Ta metoda używa tego wskaźnika. W module .cpp dostaję błąd undefined reference to Utils::logFile. Kod:

// Utils.h

#ifndef UTILS_H
#define UTILS_H

#include <string>
#include <fstream>

using namespace std;

class Utils
{
    public:
        static void Log(string);
    private:
        static fstream *logFile;
};

#endif

// Utils.cpp

#include "Utils.h"
#include <iostream>

void Utils::Log(string value)
{
    // tutaj błędy:
    logFile = new fstream("gra.log", fstream::app | fstream::out);
    logFile->write(value.c_str(), value.length());
    logFile->close();
}

Co jest nie tak?

0

w pliku cpp musisz zdefiniować logFile. Czyli np dodaj w pliku cpp

Utils::logFile = NULL;
0

Niestety, wtedy dostaję błąd: expected constructor, destructor, or type conversion before '=' token

0

Sprawdz w moich tematach na temat singletonow. Moim zdaniem cos takiego trzeba by bylo stworzyc, zeby hulalo tak jak chcesz. Bo niestety, bez definicji statycznego pola, nie mozesz sie do niego odniesc

EDIT: tu jest link
http://4programmers.net/Forum/C_i_C++/189937-rzutowanie_wartosci_1_na_wskaznik?hl=singleton

1 użytkowników online, w tym zalogowanych: 0, gości: 1