Vi posto (semplificato) parte di un codice che ho realizzato e cresciuto con molti sforzi, e che ora funziona.
codice:
// Parser.h
#pragma once
class CParser
{
public:
char m_file[260];
void ParseFile(void)
};
codice:
// Doc.cpp
#include ".\parser.h"
void CParser::ParseFile(void)
{
CFile file;
CFileException ex;
if (!file.Open( m_file, CFile::modeRead, &ex ))
// m_file riceve il nome del file da leggere
// all'apertura di CDoc::OpenFile(); .
};
codice:
// Doc.h
#pragma once
#include "Parser.h"
class CDoc
{
public:
CParser m_parser;
bool OpenFile(void);
};
codice:
// Doc.cpp
#include ".\doc.h"
bool CDoc::OpenFile(void );
{
OPENFILENAME ofn;
ofn.lpstrFile = m_parser.m_file;
return ( GetOpenFileName(&ofn) == TRUE );
};
La funzione GetOpenFileName(&ofn) mostra un common file dialog box e (se OK && il file esiste) restituisce il percorso e nome del file alla variabile m_parser.m_file che potrò adoperare in CParser::ParseFile() che interpreterà il file.
Questo è il sistema che ho adoperato per comunicare il nome del file alla classe CParser. Il mio problema ora è che voglio implementare il mio programma con nuove classi "parser" per diversi tipi o formati di files; dunque dovrò cambiare sistema.
Come faccio a fare in modo che il contenuto della mia variabile m_file sia condiviso tra tutte classi con funzioni "parser" ? (ho provato a utilizzare puntatori e riferimenti, ma debbo aver sbagliato qualcosa!)
Mi conviene creare una classe "parser" di base e poi derivare le sucessive specializzazioni per l'interpretazione dei diversi formati di files?
Un grazie in anticipo