.[ ČeskéHry.cz ].
[SOLVED]zasa raz zakys[public variable] C++

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
koso



Založen: 28. 05. 2009
Příspěvky: 110

PříspěvekZaslal: 26. květen 2010, 17:13:29    Předmět: [SOLVED]zasa raz zakys[public variable] C++ Odpovědět s citátem

Mam v jednej class zadeklarovanu premennu typu bool v public casti. V konstruktore som ju nastavil na false. Potom chcem v inej classe zmenit jej hodnotu na true ale stale mi pise undeclared identifier. Od poslednych prispevkov som sa toho dost naucil takze uz nejsom taky duty Very Happy Ale toto som zatial nepotreboval = neriesil som to. Mozete mi objasnit co musim este spravit aby som mohol zmenit hodnotu premennej v inej classe?

dakujem


Naposledy upravil koso dne 27. květen 2010, 06:12:17, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 26. květen 2010, 18:04:47    Předmět: Odpovědět s citátem

Tohle bude normalne fungovat:
kód:
class A {
public:
bool x;
};

class B {
public:
void fn() {
A *a = new A();
a->x = true;
}
}

_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
koso



Založen: 28. 05. 2009
Příspěvky: 110

PříspěvekZaslal: 26. květen 2010, 18:20:31    Předmět: Odpovědět s citátem

Cize ak sa ta clasa A vola konkretne "MouseQueryListener" tak by to malo vyzerat takto?

kód:
MouseQueryListener::MouseQueryListener() *rep = new MouseQueryListener();
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 26. květen 2010, 18:26:51    Předmět: Odpovědět s citátem

What? Very Happy Vsak nam to ukaz cele prosim ta, poradime ti lahsie.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
koso



Založen: 28. 05. 2009
Příspěvky: 110

PříspěvekZaslal: 26. květen 2010, 18:36:53    Předmět: Odpovědět s citátem

cele to ma cez 500 riadkov takze v skratke.
celu tuto prvu cast mam v osobitnom .h subore ktory je nalinkovany k hlavnemu:

kód:
class MouseQueryListener : public ExampleFrameListener, public OIS::MouseListener, public OIS::KeyListener
{
public:

    MouseQueryListener(RenderWindow* win, Camera* cam, SceneManager *sceneManager, CEGUI::Renderer *renderer)
        : ExampleFrameListener(win, cam, false, true), mRenderer(renderer)
    {
            mCurX = true;
      mCurY = false;  // tu som v konstruktore nastavil hodnoty
      mCurZ = false;
    }

   bool mCurX;
   bool mCurY;  //tu som vytvoril tie premenne z ktorymi chcem   
   bool mCurZ;  //pracovat v inej classe
...

potom v tom hlavnom .cpp chcem v classe MyApplication pristupovat k tym trom bool premennym a menit hodnoty. Tak som si vo void funkcii, v ktorej chcem k nim pristupovat, napisal to
kód:
void MyApplication::createScene()
{   
   MouseQueryListener::MouseQueryListener() *rep = new MouseQueryListener();
}
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 26. květen 2010, 18:42:42    Předmět: Odpovědět s citátem

kód:
void MyApplication::createScene()
{   
   MouseQueryListener::MouseQueryListener() *rep = new MouseQueryListener();
}
Toto je nejaky totalny bullshit. Vsak to nemoze prejst cez syntakticku kontrolu. Nechces nieco taketo?
kód:
void MyApplication::createScene() {
  mql = new MouseQueryListener(...kopec parametrov...);
  mql->mCurY = false;
}
void MyApplication::deleteScene() {
  delete mql;
}

"mql" je "MouseQueryListener* MyApplication::mql". Dufam, ze chapes, co tym chcem povedat a ze sa to takto konkretne nenapise.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
koso



Založen: 28. 05. 2009
Příspěvky: 110

PříspěvekZaslal: 26. květen 2010, 18:45:17    Předmět: Odpovědět s citátem

jj, idem to vyskusat, toto vobec nepoznam tak sa nehnevajte ze davam take Bullshity Very Happy Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
koso



Založen: 28. 05. 2009
Příspěvky: 110

PříspěvekZaslal: 26. květen 2010, 18:52:56    Předmět: Odpovědět s citátem

ohladom toho "mql". Prave o to mi ide ze ako to zapisat. Mohol by si konkretne ten prvy riadok napisat(mql = ...) ze ako to ma byt konkretne namiesto toho mql. srry
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
pcmaster



Založen: 28. 07. 2007
Příspěvky: 1827

PříspěvekZaslal: 26. květen 2010, 19:05:25    Předmět: Odpovědět s citátem

Napisal ti to v podstate Quiark. Vsak to budes mat rovnako ako ostatne public premenne (v MyApplication). Ach ach Confused Precitaj si nejake zaklady OOP, staci aj na Wikipedii, ale lepsie v skole alebo v nejakej knihe.
Ten kod, ktory nam ukazujes, si nevymyslel sam. Preco ho chces takto menit, ked este ani nechapes, ako funguje?

Zakladna ukazka, ale fakt nema nikto cas riesit taketo zaklady, ktore sa proste musis naucit:

kód:

1. class MyApplication : public A, private B {
2. private:
3.  MouseQueryListener* mql;  //privatna premenna
4.  void privatnaMetodaSParametrami(float parameter);
5. public:
6.   int inaPremenna;
7.   int* esteInaPremenna;
8.   bool verejnaMetodaSNavratovouHodnotouBezParametra();
9.   MyApplication(); // konstruktor
10.  void createScene();  // dalsie metody
11.  void deleteScene();
};

Tak. Riadok 3 napriklad deklaruje privatnu premennu typu (MouseQueryListener*) s nazvom (mql). Konkretne tuto premennu (ona je typu ukazatel) chces nastavit, aby niekam ukazovala, konkretne na miesto v pamati, kde sa nachadza instancia objektu typu (MouseQueryListener), ktory vyrobis "new MouseQueryListener(...kopecparametrov...)" (tento prikaz vracia premennu typu (MouseQueryListener*), nie (MouseQueryListener), pozor na to)). Tuto premennu potom aj niekde dealokujes zavolanim "delete mql", aby si nezasieral pamat a nemal "memory leaky". Napriklad tak, ako som ti to napisal v predchadzajucom poste.

ALE, kedze prd vieme, co chces, tak to nemozes takto rovno odpisat, kym si neuvedomis, co to ma a nema robit.
_________________
Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
koso



Založen: 28. 05. 2009
Příspěvky: 110

PříspěvekZaslal: 26. květen 2010, 19:12:59    Předmět: Odpovědět s citátem

sak ja prave to OOP este nemam velmi zvladnute.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Ladis



Založen: 18. 09. 2007
Příspěvky: 1537
Bydliště: u Prahy

PříspěvekZaslal: 26. květen 2010, 20:17:57    Předmět: Odpovědět s citátem

Proto začínáš editováním 500řádkového kódu?
_________________
Award-winning game developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
koso



Založen: 28. 05. 2009
Příspěvky: 110

PříspěvekZaslal: 27. květen 2010, 06:11:34    Předmět: Odpovědět s citátem

dakujem ze ste ma hned neodkazovali na nejaku literaturu(asi sa na nu odkazem sam Very Happy Very Happy) ale vysvetlili mi to Very Happy

Ladis: originalne mal ten zaklad ktory som pouzil okolo 150 riadkov. Zvysok som si dorobil sam, a vsehovsudy aj s headermi (mojimi, nie systemovymi) ma vyse 500.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna