Ho un problema che penso sia di approccio (piu' che una soluzione mi aspetto un metodo alternativo di orgaizzare il lavoro).
codice:
class pippo {
public:
pippo();
void somma();
int val;
};
class seconda {
public:
seconda(pippo* parent);
};
pippo::pippo()
{
val = 0;
seconda* lasec = new seconda(this);
}
void pippo::somma()
{
val = 5;
}
seconda::seconda(pippo* parent)
{
parent->somma();
}
int main()
{
pippo* inizio = new pippo();
printf( "%d", inizio->val );
}
se il codice sta in un file unico tutto ok (ho ricomposto il codice al volo senza averlo riprovato, ma dovrebbe essere a posto).
Se come mi aspetto di fare per un progetto piu' grosso (il problema mi si e' posto su un lavoro con wxWidgets) "spezzo" il codice in
pippo.h con la definizione della classe pippo
pippo.cpp con l'implementazione della classe pippo
secondo.h con la definizione della classe secondo
secondo.cpp con l'implementazione della classe secondo
main.cpp con la funzione main non posso accedere ai metodi (pubblici) dell'oggetto passato in quanto non definiti. Non posso nemmeno includere i file .h in quanto avrei delle doppie definizioni.
A dirla tutta non mi sembra nemmeno un approccio così pulito il passaggio del puntatore a oggetto, ma il problema mi si e' posto sviluppando con wx un prototipo di procedura di fatturazione in un frame unico:
il codice del frame principale (e unico), tra le altre cose dovrebbe definire il metodo per uscire dal programma. A quel punto istanzierei una classe wxPanel che presenta un menu a bottoni e alla pressione del pulsante bQuit dovrebbe richiamare il metodo della classe chiamante.
Cosa sto sbagliando?
Grazie 1000 a chi avrà la pazienza..