Błąd kompilacji w prostym programie C++

Witam, mam problem z bardzo prostym kodem c++(http://wklej.org/id/3434104/), który wywala 2 błędy

  1. Jeśli w pliku Logowanie.h pozostaną zakomentowane include i namespace to wyświetlają się błędy “error: ‘fstream’ does not name a type” i “error: ‘string’ does not name a type”, gdy odkomentuję je to te linijki dobrze kompilują się(chyba) ale wydaje mi się że nagłówki z main.cpp powinny tutaj działać i nie trzeba ich powtarzać

  2. Jeśli odkomentuję wyżej wspomniane linijki to wyświetla się dodatkowo błąd “undefined reference to `Logowanie::zalogowany’”

Używam CodeBlocks z MinGW ale podobne problemy były z Eclipse

Nie ponieważ jest coś takiego jak zakres plików.

W której linijce ten błąd występuje?

Dobra teraz widzę, że w konstruktorze. Konstruktor wywoływany jest na rzecz danego obiektu a nie przestrzeni nazw danej klasy, więc nie możesz z poziomu takich metod dowoływać się bezpośrednio do metod statycznych lecz musisz podać też zakres z jakiego pochodzi metoda. Czyli konstruktorze metodę statyczną musisz wy wołać tak:

Logowanie::zalogowany = false;

Dopiero po napisaniu zauważyłem, że to właściwość, a nie metoda statyczna, ale dla jednych i drugi trzeba się dostać poprzez określenie przestrzeni nazw.
Dodatkowo należałoby też zainicjować zmienne statycznych (nadać im wartości - utworzyć je).

1 polubienie