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