Pomoc kod oop/c++

poruka: 5
|
čitano: 1.229
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
15 godina
neaktivan
offline
Pomoc kod oop/c++

Radim neki projektic i zapinjem na mislim jednostavnim stvarima jer mi fali dosta znanja iz oop, pa ako bi mi ko mogao pomoci ili barem usmjeriti sto da tocno proucim kod oop. citala sam dosta no sad to teba i primjeniti :)

 


evo npr nedan problem:

 

dakle imam klasu Cklasa1 sa svim svojim objektima, i recimo jedna je obicna varijabla

 

class Cklasa1: public blabla,..{

..

public:

bool Tracker = false;


}

 

zatim imam klasu Cklasa2 koja sad ima pokazivac na objekt klase Cklasa1, dakle: Cklasa1 *pok;

 

class Cklasa2: public blabla,..{

..

public:

Cklasa1 *pok;

 

...
}


Unutar neke fje te klase, Cklasa2 dolazi do promjene: pok->Tracker = true;


void Cklasa2::nekafja(){

 

pok->Tracker = true;

}


E sad, ja sam napravila neku klasu kojoj mi je bazna klasa Cklasa1 i recimo da sadrzi fju


bool CmojaKlasa::proba(){

return Tracker;


}


Unutar Cklase1 ima fja koja se npr poziva na klik misa i izgleda ovako:

void Cklasa1::CheckPoints(CPoint point){
   
    CmojaKlasa poz;
   
    if(poz.proba())MessageBox("traker radi",NULL,MB_OK);
     
    else MessageBox("traker ne radi",NULL,MB_OK);
}


Kako god bilo Tracker mi je uvijek false iako se dogodila ova akcija koja unutar klase Cklasa2 mijenja vrijednost Trackera na true!


ukratko: Kako da nekom klasom dohvatim promjenjenu vrijednost objekta A iz bazne klase ako je taj isti objekt promijenjen u nekoj trecoj klasi na gore opisani nacin? hvala

Moj PC  
0 0 hvala 0
16 godina
neaktivan
offline
RE: Pomoc kod oop/c++

Prouči virtualne funkcije,abstraktne klase i čiste virtualne funkcije.Što je to abstraktna klasa i slično.Ne znam koliko si napredovala u naslieđivanju među klasama i slično.

Private
17 godina
protjeran
offline
RE: Pomoc kod oop/c++

U funkciji

 

Cklasa2::nekafja()

 

mijenjaš Tracker koji je član "pok" objekta, dok u funkciji

 

CmojaKlasa::proba()

 

čitaš Tracker koji je naslijeđen (a nigdje prethodno nije mijenjan pa je zato stalno false).

Poruka je uređivana zadnji put sub 21.8.2010 21:51 (Tracer).
15 godina
neaktivan
offline
RE: Pomoc kod oop/c++
Tracer kaže...

U funkciji

 

Cklasa2::nekafja()

 

mijenjaš Tracker koji je član "pok" objekta, dok u funkciji

 

CmojaKlasa::proba()

 

čitaš Tracker koji je naslijeđen (a nigdje prethodno nije mijenjan pa je zato stalno false).

 

je jasno mi je to,to sam si i mislila i guglam da nadjem kako da rijesim to a ne znam kaj trebam tocno guglatMršti se

kako da to dohvatim? a da ne radim pokazivac na Klasu2 i od nje dobivam tu vrijednost? tako sam probala pa mi baca bugove

Poruka je uređivana zadnji put sub 21.8.2010 22:44 (danijela).
17 godina
protjeran
offline
Pomoc kod oop/c++

Evo jednog primjera kako bi to mogla rješiti pa si to prepravi za svoj slučaj:

 

#include <iostream>
using namespace std;

class A{
    public:
       static bool Tracker;
};
class MojaKlasa : public A{
    public:
       bool MojFunkcija(){
          return A::Tracker;
       }
};
bool A::Tracker = false;

void MojaFunkcija2(){
    A::Tracker = true;
}

int main()
{
    MojaKlasa obj;
    if(obj.MojFunkcija())
       cout << "True\n";
    else
       cout << "False\n";

    MojaFunkcija2();  // mijenjaj tracker

    if(obj.MojFunkcija())
       cout << "True\n";
    else
       cout << "False\n";

    cin.get();
    return 0;
}

Moj PC  
1 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice