Continuando a ricercare, ho trovato questo che mi risolve solo in parte il problema:
http://www.programmiamo.altervista.org/C/funzioni/funz11.html
Quindi le variabili globali le devo dichiarare normalmente in un heder senza classe e poi negli altri headers definirle nuovamente con la clausola extern.
Ho modificato con queste nuove deduzioni il programmino, ma non mi spiego perché l'aggiornamento che avviene in ClasseUno non viene recepito in ClasseDue. La risposta che mi dà il cout è questa:"inizializzato in dichiarative - Passato da Classe_Due -".
Riposto tutto il programma, perdonate la lunghezza del post.
#include "h_000_dichiarative.h"
#include "h_001_classe_uno.h"
#include "gtkmm.h"
#include <iostream>
using namespace std;
int main() {
Glib::RefPtr<Gtk::Application> app = Gtk::Application::create();
H_001_Classe_Uno *Istanza_Classe_Uno = new H_001_Classe_Uno;
int risposta = app->run(*Istanza_Classe_Uno);
return risposta;
}
#ifndef H_000_DICHIARATIVE_H
#define H_000_DICHIARATIVE_H
#include "gtkmm.h"
#include <iostream>
using namespace std;
static string Testo1 = "inizializzato in dichiarative - ";
#endif // H_000_DICHIARATIVE_H
#ifndef H_001_CLASSE_UNO_H
#define H_001_CLASSE_UNO_H
#include "h_000_dichiarative.h"
#include "gtkmm.h"
#include <iostream>
using namespace std;
extern string Testo1;
class H_001_Classe_Uno : public Gtk::Window
{
public:
H_001_Classe_Uno();
};
#endif // H_001_CLASSE_UNO_H
#include "h_001_classe_uno.h"
#include "h_002_classe_due.h"
#include "h_000_dichiarative.h"
H_001_Classe_Uno::H_001_Classe_Uno() {
Testo1 += "Passato da Classe_Uno - ";
H_002_Classe_Due IstanzaClasseDue;
}
#ifndef H_002_CLASSE_DUE_H
#define H_002_CLASSE_DUE_H
#include "h_000_dichiarative.h"
#include "gtkmm.h"
#include <iostream>
using namespace std;
extern string Testo1;
class H_002_Classe_Due : public Gtk::Window
{
public:
H_002_Classe_Due();
};
#endif // H_002_CLASSE_DUE_H
#include "h_002_classe_due.h"
#include "h_000_dichiarative.h"
H_002_Classe_Due::H_002_Classe_Due() {
Testo1 += "Passato da Classe_Due - ";
cout << Testo1 << endl;
}