C++: probelm sa klasama

toxi

Zainteresovan član
Poruka
379
Recimo da imam 2. klase napisane u različitim header fajlovima.
Prva klasa se zove MainForm i ovo sam napisao u njenom header-u:
-----------------------------------------------------------------------------------
#include"SubForm.h" //ovo je header fajl druge klase

class MainForm
{
public:
MainForm(void)
{
SubForm *bzw = new SubForm();
/* ... ostatak koda..... */
}
//...ostatak koda....
};

-----------------------------------------------------------------------------------



Druga klasa se zove SubForm i ovo sam napisao u njenom header-u:
-----------------------------------------------------------------------------------
#include"MainForm.h" //ovo je header fajl druge klase

class SubForm
{
public:
SubForm(void)
{
MainForm*bzw = new MainForm();
/* ... ostatak koda..... */
}
//...ostatak koda....
};

-----------------------------------------------------------------------------------

I ne radi.... Šta treba da ispravim/dodam da bi radilo?
 
toxi:
Recimo da imam 2. klase napisane u različitim header fajlovima.
Prva klasa se zove MainForm i ovo sam napisao u njenom header-u:
-----------------------------------------------------------------------------------
#include"SubForm.h" //ovo je header fajl druge klase

class MainForm
{
public:
MainForm(void)
{
SubForm *bzw = new SubForm();
/* ... ostatak koda..... */
}
//...ostatak koda....
};

-----------------------------------------------------------------------------------



Druga klasa se zove SubForm i ovo sam napisao u njenom header-u:
-----------------------------------------------------------------------------------
#include"MainForm.h" //ovo je header fajl druge klase

class SubForm
{
public:
SubForm(void)
{
MainForm*bzw = new MainForm();
/* ... ostatak koda..... */
}
//...ostatak koda....
};

-----------------------------------------------------------------------------------

I ne radi.... Šta treba da ispravim/dodam da bi radilo?


Jel' jos uvek ne radi a ti sedis ispred racunara i cekas da mozda proradi, ili imas neki podatak od strane kompajlera pa bi to mogao tresnuti ovamo, ili si samo pustio buvu da vidis umemo li se time izboriti, ili te bas briga pa pricas sam sa sobom ili si presao na nesto mnogo lakse?
 
Šta vam je bre? Osećate se prozvanim zato što nisam odgovorio neko vreme? Ccc... Pa nisam mogao - nisam bio kući, šta me vređate odma?

Anyway...
Ono što piše kao greška je nedovoljno( bar meni :( )- piše da SubForm nije nigde definisan i tome slično. a ako recimo samo unutar MainForm deklarisem objekat tipa SubForm( a u SubForm-u ne napravim ni jedan MainForm) onda je sve OK i nema greške...

Ako ovo ne može ovako kako sam ja zamislio recite mi kako može - ono što ja hocu da uradim je sledece:
MainForm i SubForm su izvedene iz Form klase...
MainForm je pozvao SubForm( dakle MainForm je Parrent a SubForm je Child).
Ja hoću da iz SubForm utičem na MainForm, npr da pozivam njene funkcije i sl...
To sam pokušao da ostvarim tako što sam hteo da se konstruktoru SubForm-a predaje pokazivac na objekat MainForme( pokazivac na objekat koji da napravi SubForm-u). I javio se gore naveden problem...

Takođe pokuša da konstruktor SubForm-a zahteva predavanje objekta tipa Form( Jer su i SubForm i MainForm izvedene iz te Form klase) i to radi ali ja ne znam kako da u tom slučaju pristupim funkcijama MainForm-a. Može li?


E da, ono sto BeeKey reče -> onaj kod koji sam gore postavio radi ako su obe klase napisane unutar istog fajla a ne odvojeno... :/
 
Imam reshenje onako na keca,

Reshenje je da u SubForm-i definishesh pokazivch na funkcij-u (ili vishe njih ako treba) i da
onda na mestima na kojima bi pozvao funkciju MainForm-e pozovesh izvrshavanje funcije
preko tog odredjenog pointer-a. A u Main formi bi instancirao SubForm-u i prosledio adrese
funkcija koje bi se pozivale. To ti je nachin da izbegnesh cirkularno povezivanje datoteka, a ujedno i uvod u rad sa event-ovima, koji ti pruzaju chitavu lepezu lepih stavri i bez kojih neccesh mocci da radish ali da ne smaram sada sa tim. ;)

Pozdrav !!!
 
Doco, 'fala!
Međutim, u .NET-u ne mož' da se prosleđuju f-je nego mora da se prave neki delegati( a onda "koristeći njih" napravim neki event) -> poenta je da hoću da kažem da sam o eventim već nešto učio i da ću sada moći da rešim problem( nije mi jasno kako se nisam sam setio ovoga ).

Hvala još jednom, pozdrav!
 

Back
Top