Witam,
aktualnie piszę projekt prostej gry konsolowej. Z oczywistych względów konieczny jest podział kodu na wiele plików. Szczerze mówiąc nie miałem bladego pojęcia jak się za to zabrać i w przypływie głupoty napisałem cały projekt w plikach nagłówkowych. Wszystko działało dobrze, ale dopiero zagłębienie się w temat uświadomiło mnie, że część kodu powinna być w plikach źródłowych, a część w nagłówkowych. Przerobiłem więc cały projekt i niestety obecnie nie działa. Program nie kompiluje się i wyrzuca ponad 800 błędów (głównie "Error 145 error C3861: identifier not found" i błędy wynikające z tego, że coś nie jest rozpoznane).
Przykładowy plik nagłówkowy z mojego projektu:
#pragma once
#ifndef Header_h
#define Header_h
class Liczniki
{
friend class Mieszkanie;
float Woda;
float Gaz;
float Prad;
float Ogrzewanie;
public:
Liczniki();
void ZmienWoda(const float woda);
void ZmienGaz(const float gaz);
void ZmienPrad(const float prad);
void ZmienOgrzewanie(const float ogrzewanie);
float WyswietlWoda() const;
float WyswietlGaz() const;
float WyswietlPrad() const;
float WyswietlOgrzewanie() const;
void ZerujLiczniki();
};
#endif
i przykładowy kod źródłowy:
#include "stdafx.h"
#include "Header.h"
#include "Liczniki.h"
Liczniki::Liczniki() : Woda(0), Gaz(0), Prad(0), Ogrzewanie(0) { }
void Liczniki::ZmienWoda(const float woda)
{
Woda += woda;
}
...
Plik Header.h:
#include <stdio.h>
#include <string.h>
#include <sstream>
#include <stdio.h>
#include <math.h>
#include <iostream>
#include <vector>
#include <time.h>
#include <conio.h>
#include <windows.h>
#include <string>
#include <iomanip>
#include <fstream>
using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
using std::fixed;
using std::setprecision;
using std::ofstream;
using std::ifstream;
using std::fstream;
using std::stringstream;
Nie liczę, że ktokolwiek będzie nawet próbował analizować mój kod, bo w sumie jest tego z 50 plików. Chodzi mi raczej o to, na co powinienem zwrócić uwagę szukając błędu.
Z góry dziękuję za wszystkie odpowiedzi.
//edit. W moim projekcie mam sporo klas dziedziczących z innych - jeśli to może być jakieś naprowadzenie.