Ahoj, pomohl by mi někdo s následujícím problémem?
Mám dvě třídy Zpracuj a Eviduj. Ve třídě Zpracuj je funkce provedNastaveni() která má za úkol pomocí settru nastavit hodnotu proměnné setStavNeceho na false. Pokud by však funkce provedNastaveni nebyla (například z mainu) zavolána, stavNeceho by měl zůstat na true – prostě default hodnota (řeším konstruktorem).
Já ale potřebuji s proměnnou stavNeceho pracovat i ve třídě Eviduj. Ovšem pouze tak, že mě zajímá její hodnota – nechci ji měnit. Snažím se tedy uvnitř třídy Eviduj použít getter.
Bohužel při provádění řádku níže, program spadne. Nevíte, kde by mohla být chyba?
bool stavNecehoZeTridyZpracuj = Eviduj::instanceZpracuj->getStavNeceho();
Kód vypadá takto:
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);
}
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
Eviduj.cpp
Zpracuj* Eviduj::instanceZpracuj = NULL;
Eviduj::Eviduj()
{
}
Eviduj::metodaKdeChciZjistitHodnotuPromenne()
{
// pri debugovani to zde selze
bool stavNecehoZeTridyZpracuj = Eviduj::instanceZpracuj->getStavNeceho();
Eviduj.h
#ifndef EVIDUJ_H
#define EVIDUJ_H
#include "Zpracuj.h"
class Eviduj
{
public:
Eviduj();
private:
static Zpracuj *instanceZpracuj;
};
#endif // EVIDUJ_H