Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zmiana adresu we wskaźniku przez jego wewnętrzny this ??

Ostatnio zmodyfikowano 2011-06-13 16:00
Autor Wiadomość
Mrowqa
Temat założony przez niniejszego użytkownika
Zmiana adresu we wskaźniku przez jego wewnętrzny this ??
» 2011-06-12 19:48:06
Witam!

Mój problem polega na tym:
zrobiłem sobie klasę, która ma metody do zapisu i wczytania. Zrobiłem to tak, by można było przesyłać wskaźniki wskazujące tablicę( np.
wsk.zapisz( sciezka, ile_elementowa_tablica );
 ). Rozwiązanie było proste:
klasa * wsk = this;
 <-- do zapisu wystarczyło.

Przy wczytaniu trudniej ( mam wskaźnik ):
C/C++
this = wsk; // ??
Chodzi o to, że na rzecz zerowego elementu wywołuje wczytywanie. wsk przechowuje wczytane dane. Chcę, aby ten wskaźnik, który przechowuje rezultat został przypisany do obiektu, na rzecz która wywołałem metodę.
C/C++
wsk.wczytaj( sciezka, ile );
// w srodku metody
this = rezultat; // ??
Chce, aby wsk miał wskazywał na to co rezultatu. Problem w tym, że rezultat to wskaźnik w metodzie, którą wywołał wsk. Jak to zrobić ?? Przypisać thisowi rezultat ?? Przez wartość zwracaną nie mogę ( zwraca coś dla mnie ważnego ). Nie chce także robić jej jako statyczną.
Jest jakieś rozwiązanie ??

Pozdrawiam,
Mrowqa
P-34078
pekfos
» 2011-06-12 20:13:45
this jest stały.
P-34079
Mrowqa
Temat założony przez niniejszego użytkownika
» 2011-06-12 20:29:56
Tak myślałem, że się tak nie da ;/
Więc nie da się tego zrobić w tej funkcji? Musiałbym zrobić to jako funkcję statyczną ? Może inne rozwiązanie ?? :P ( uzyskać adres obiektu i go zmienić może ?? :D )

@edit:
1. this wskazuje na obiekt, a co gdyby go rzutować ?? Osiągnąłbym swój cel ?? :P
2.
C/C++
wsk = this;
delete[] wsk; // !!!
wsk = new obj[ ile ]; // da się wymusić rezerwację w określonym miejscu w pamięci ?? - bym zajął pole thisa :D
Coś mi się zdaje, że teoretycznie gdyby było możliwe, to praktycznie trudne ( komp by na pewno zajął tamte komórki pamięci w tym czasie :P )
3. ( to już tak na boku ) da się ustawić wartość domniemaną parametru metody thisem ?? konkretnie:
void X::metoda( X cos = this );


Pozdrawiam,
Mrowqa
P-34080
absflg
» 2011-06-13 00:17:23
this to this i nic się z tym nie zrobi. Jeżeli operujesz nie na obiektach, a na wskaźnikach na nich to nie jest to już metoda tego obiektu. Jako, że typ wskaźnika nie ma możliwości zdefiniowania własnych metod to wypada zrobić zwykłą funkcję zaprzyjaźnioną.

this to WSKAŹNIK. I to do tego stały. Więc nie jest typu
X
, tylko
X * const
.
P-34086
Mrowqa
Temat założony przez niniejszego użytkownika
» 2011-06-13 16:00:24
@up wiem :) tylko szukam możliwości. Mniemam, że this, a wskaźnik na rzecz, którego została wywołana metoda to zajmują różne komórki pamięci :D

Wpadłem na rozwiązanie: ( ale nie wiem czy składniowo poprawne :P )
#define x.wczytaj( sciezka, ile ) x.wczytaj( sciezka, ile, int( x ) )
Ewentualnie mogę zmienić nazwę metody, by się różniły, ale czy w oto przeze mnie przedstawiony sposób można to zrobić ?? I czy tam przypadkiem nie powinno być
int( & x )
 ??
/ zdaję mi się, że trzeba tam postawić ampersand. Konkretnie - chcę w metodzie adres wskaźnika i ustawić go na rezultat wczytywania z pliku :) czyli na inne miejsce w pamięci

Pozdrawiam,
Mrowqa
P-34106
« 1 »
  Strona 1 z 1