Ĺ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
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?
