Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
koso
Založen: 28. 05. 2009 Příspěvky: 110
|
Zaslal: 26. květen 2010, 17:13:29 Předmět: [SOLVED]zasa raz zakys[public variable] C++ |
|
|
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 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 |
|
 |
Quiark

Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 26. květen 2010, 18:04:47 Předmět: |
|
|
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 |
|
 |
koso
Založen: 28. 05. 2009 Příspěvky: 110
|
Zaslal: 26. květen 2010, 18:20:31 Předmět: |
|
|
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 |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 26. květen 2010, 18:26:51 Předmět: |
|
|
What? 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 |
|
 |
koso
Založen: 28. 05. 2009 Příspěvky: 110
|
Zaslal: 26. květen 2010, 18:36:53 Předmět: |
|
|
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 |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 26. květen 2010, 18:42:42 Předmět: |
|
|
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 |
|
 |
koso
Založen: 28. 05. 2009 Příspěvky: 110
|
Zaslal: 26. květen 2010, 18:45:17 Předmět: |
|
|
jj, idem to vyskusat, toto vobec nepoznam tak sa nehnevajte ze davam take Bullshity  |
|
Návrat nahoru |
|
 |
koso
Založen: 28. 05. 2009 Příspěvky: 110
|
Zaslal: 26. květen 2010, 18:52:56 Předmět: |
|
|
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 |
|
 |
pcmaster

Založen: 28. 07. 2007 Příspěvky: 1827
|
Zaslal: 26. květen 2010, 19:05:25 Předmět: |
|
|
Napisal ti to v podstate Quiark. Vsak to budes mat rovnako ako ostatne public premenne (v MyApplication). Ach ach 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 |
|
 |
koso
Založen: 28. 05. 2009 Příspěvky: 110
|
Zaslal: 26. květen 2010, 19:12:59 Předmět: |
|
|
sak ja prave to OOP este nemam velmi zvladnute. |
|
Návrat nahoru |
|
 |
Ladis

Založen: 18. 09. 2007 Příspěvky: 1537 Bydliště: u Prahy
|
Zaslal: 26. květen 2010, 20:17:57 Předmět: |
|
|
Proto začínáš editováním 500řádkového kódu? _________________ Award-winning game developer |
|
Návrat nahoru |
|
 |
koso
Založen: 28. 05. 2009 Příspěvky: 110
|
Zaslal: 27. květen 2010, 06:11:34 Předmět: |
|
|
dakujem ze ste ma hned neodkazovali na nejaku literaturu(asi sa na nu odkazem sam ) ale vysvetlili mi to
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 |
|
 |
|