ďťż

Ładny brzuch

Mam problem z zadeklarowaniem wskaznika do składnika klasy:

class monitor
{
public:
int szerokosc;
};
int monitor::*wsk;
wsk = &monitor::szerokosc;

TAk deklaruje i nie che pojsc moze wiecie dlaczego?



A wklej do kompilator ten kod i spróbuj skompilować:

#include <cstdlib> #include <iostream> using std::cout; using std::cin; using std::endl; class monitor { public: int szerokosc; }; int main(int argc, char *argv[]) {    int monitor::*wsk;    wsk = &monitor::szerokosc;    system("PAUSE");    return EXIT_SUCCESS; }

// kompilowane w Dev-C++ 4.9.9.2
Użytkownik comp123 edytował ten post 14 marzec 2006, 15:57
działa ale to mi wyglada na obejscie tematu chcialem zadeklarowac wskaznik w klasie.

#include <cstdlib> #include <iostream> using std::cout; using std::cin; using std::endl; class monitor { public: int szerokosc; }; int monitor::*wsk = &monitor::szerokosc; // od razu przypisujemy adres int main(int argc, char *argv[]) {    system("PAUSE");    return EXIT_SUCCESS; }
Użytkownik comp123 edytował ten post 14 marzec 2006, 16:04


blech ;)
Użytkownik st3tc edytował ten post 14 marzec 2006, 16:56
comp to działa spox :
int monitor::*wsk = &monitor::szerokosc; // od razu przypisujemy adres

ale jak chce zrobic
int monitor::*wsk;
wsk = &monitor::a;

to nie pojdzie why?

stf pisze:
int monitor::*wsk = &monitor::szerokosc; // od razu przypisujemy adresA ja sie pytam - adres czego ?

No jak to czego zmiennej szerokosc. O co Ci chodzi?


O co Ci chodzi? Pomysl. Zreszta napisalem to juz w poprzednim poscie.

To moze byś podał przykład zadeklarowania skadnika niestatycznego, bedzie lepiej widac.


comp to działa spox :
int monitor::*wsk = &monitor::szerokosc; // od razu przypisujemy adres

ale jak chce zrobic
int monitor::*wsk;
wsk = &monitor::a;

to nie pojdzie why?

blech 2 ;p
Użytkownik st3tc edytował ten post 14 marzec 2006, 16:56
Dla składnika niestatycznego:
#include <cstdlib> #include <iostream> using std::cout; using std::cin; using std::endl; struct monitor { public:       int szerokosc; }; monitor m; int *wsk = &(m.szerokosc); int main(int argc, char *argv[]) {    system("PAUSE");    return EXIT_SUCCESS; }

st3tc - dziękuje, nie skorzystam

Z tego co mówisz to Grębosz w Symfonii 2 tom się pomylił, bo na stronie 392 podaje, że:

class concorde{
//...
public:
int cieglo_steru;
int cieglo_klap
//...
};
int concorde::*wskaz;
wskaz = &concorde::cieglo_steru;


Z tego co mówisz to Grębosz w Symfonii 2 tom się pomylił, bo na stronie 392 podaje, że:

class concorde{
//...
public:
  int cieglo_steru;
  int cieglo_klap
//...
};
int concorde::*wskaz;
wskaz = &concorde::cieglo_steru;

blech 3 ;)
Użytkownik st3tc edytował ten post 14 marzec 2006, 16:57
wydanie 5 poprawione
rok 2000,
ale mowilem to do stf

co załapał obszedł temat, bo posłużył się zwykłym wskaźnikiem a nie wskaźnikiem do pokazywania na składnik-daną.


co załapał obszedł temat, bo posłużył się zwykłym wskaźnikiem a nie wskaźnikiem do pokazywania na składnik-daną.

ok spox ale dlaczego to:
int monitor::*wsk = &monitor::szerokosc;
działa
a to:
int monitor::*wsk;
wsk = &monitor::szerokosc;

nie chce?, chociaz nawet Grębosz tak podaje.


ok spox ale dlaczego to:
int monitor::*wsk = &monitor::szerokosc;
działa
a to:
int monitor::*wsk;
wsk = &monitor::szerokosc;

nie chce?, chociaz nawet Grębosz tak podaje.


ok spox ale dlaczego to:
int monitor::*wsk = &monitor::szerokosc;
działa
a to:
int monitor::*wsk;
wsk = &monitor::szerokosc;

nie chce?, chociaz nawet Grębosz tak podaje.

st3tc - zdaje mi się że nieraz piszesz zbyt pochopnie. :)

To dalej jakas lipa, może mi ktoś odpowie konkretnie?


To dalej jakas lipa, może mi ktoś odpowie konkretnie?

Jeśli napiszesz

int monitor::*wsk = &monitor::szerokosc;
to kompilator będzie wiedział, że wskaźnik wsk ma zawsze wskazywać na składową szerokosc.
Jeśli natomiast napiszesz

int monitor::*wsk;
to kompilator stworzy taki wskaźnik, do którego będzie można coś później przypisać.
Można to zrobić na przykład takim kodem:

wsk = &monitor::szerokosc
a jak chyba wiesz takie rzeczy muszą być w jakiejś funkcji, na przykład w main.
Jeślibyś więc napisał te dwie linijki w main to program skompilowałby się bez problemu. Natomiast jeśli poza nim (i innymi funkcjami) to kompilacja zakończy się niepowodzeniem.
Użytkownik Chmurek edytował ten post 15 marzec 2006, 16:35
Faktycznie w funkcji main chodzi spoko, ale jak to robie np. w funkcji skadowej danej klasy to potem jak sie do takiego wskaznika odniesc?


Faktycznie w funkcji main chodzi spoko, ale jak to robie np. w funkcji skadowej danej klasy to potem jak sie do takiego wskaznika odniesc?

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •