Ok, hai ragione, non volevo incasinare troppo la discussione, con tutto il codice.
Ecco una parte più significativa:
Debugger.h
codice:
using namespace std;
namespace debugger
{
enum Attivo {on,off};
enum Modo{append,nuovo};
struct funzione;
class Debugger
{
public:
/*
METODI PUBBLICI DISPONIBILI AGLI UTENTI
*/
Debugger(string nomefile,Modo modo);
void insert(string nomeFile,string nomeFunzione,Attivo intest,Attivo mess);
void insert(string nomeFunzione,Attivo intest,Attivo mess);
void start(string nomeFile,string nomeFunzione);
void end(string nomeFile,string nomeFunzione);
template<typename T> void scrivi(T m );
private:
/*
Dichiarazione membri privati
. . .
*/
};
}
debugger.cpp
codice:
#include "Debugger.h"
using namespace debugger;
Debugger::Debugger(string nomefile,Modo modo)
{
//Implementazione
}
template<typename T> void Debugger::scrivi(T m )
{
mess<<m;
FILEoutput=new ofstream(fileOutput.c_str() ,fstream::app);
*FILEoutput << mess.str();
mess.str("");
}
file main.cpp
codice:
#include "Debugger.h"
using namespace std;
using namespace debugger;
int main()
{
Debugger d("debug.txt",nuovo); //OK
d.insert("main.cpp","main",on,on); //OK
d.scrivi<int>(10); //OK in compilazione, errore di Linking
d.scrivi("ciao"); //OK in compilazione, errore di Linking
return 0;
}