Děkuji za objasnění, tuším, kam tím míříte. Problém, který ale mám je spíše čistě o OOP, resp. OOP v C++. Architektura aplikace je už nějakým způsobem navržena a já jediné, co chci, je vypropagovat proměnnou z jedné třídy do druhé tak, abych nemusel používat procedurální extern.
Budu tedy konkrétní - mám třídy Zpracuj() a Eviduj(). Cílem je, abych mohl proměnnou ze třídy Zpracuj() předat do třídy Eviduj(). Mám (nefunkční) řešení, které vypadá takto:
Zpracuj.h
#ifndef ZPRACUJ_H
#define ZPRACUJ_H
class Zpracuj
{
public:
static Zpracuj *inst;
public:
Zpracuj();
virtual ~Zpracuj();
bool getStavNeceho()
{
return stavNeceho;
}
static Zpracuj *getInstance()
{
if(!inst) inst = new Zpracuj();
return inst;
}
static void provedNastaveni();
public:
bool stavNeceho;
private:
void setStavNeceho(bool stavNeceho_) {stavNeceho = stavNeceho_;}
};
#endif // ZPRACUJ_H
Zpracuj.cpp
#include "Zpracuj.h"
Zpracuj::Zpracuj()
{
// Chci aby kdyz se nezavola setter, byla default hodnota true
stavNeceho = true;
}
Zpracuj::~Zpracuj()
{
}
// zavolano napr. z mainu (za urcitych podminek)
void Zpracuj::provedNastaveni()
{
Zpracuj z;
z.setStavNeceho(false);
}
Eviduj.h
#ifndef EVIDUJ_H
#define EVIDUJ_H
#include "Zpracuj.h"
class Eviduj
{
public:
Eviduj();
private:
static Zpracuj *instanceZpracuj;
};
#endif // EVIDUJ_H
Eviduj.cpp
Zpracuj* Eviduj::instanceZpracuj = NULL;
Eviduj::Eviduj()
{
}
Eviduj::metodaKdeChciZjistitHodnotuPromenne()
{
// pri debugovani to zde selze
bool stavNecehoZeTridyZpracuj = Eviduj::instanceZpracuj->getStavNeceho();
}