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

Rispondi quotando