Oppure

Loading
02/09/10 17:58
Salve, allora ho un programma su più sorgenti.

main.cpp
include.h
framework.cpp
framework.h
classi.cpp
classi.h
funzioni.cpp
funzioni.h

Allora in framework.h ho definito un namespace "fe_frame" in cui ci sono le classi "framework" ed "error". Ho bisogno anche di uno stream per scrivere gli eventuali errori su file e nel namespace definisco ofstream *error_stream;
Posto il codice :

#ifndef FE_FRAME
   #define FE_FRAME

#include "include.h" //per le librerie SDL
#include <fstream>
#include <iostream>

using namespace std;



namespace fe_frame
{
	
 ofstream *error_stream;
 void setStreamOut(ofstream &file);
	
 class framework { .... };
 
 class error { ... };
 

};

#endif



allora, nonostante le direttive #ifndef,#define #endif il compilatore dice che error_stream è gia definito in classi.obj, questo perchè l'header è incluso da piu file.
Non riesco a trovare una soluzione, ho anche provato a definire extern ofstream *error_strem, ma mi da lo stesso errore!

p.s : uso visual c++ express 2010
Ultima modifica effettuata da 02/09/10 18:01
02/09/10 18:13
HeDo
non puoi dichiarare una variabile in un file .h, sia in un namespace sia fuori :)

devi invece dichiararla in un file cpp e richiamarla dagli altri file con extern:

extern ofstream *error_stream;


P.S cmq lo stream di errore si chiama cerr, puoi usare quello senza doverlo ridichiarare :)
Ultima modifica effettuata da HeDo 03/09/10 15:45
aaa
03/09/10 14:11
grazie della risposta!