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

Wskażniki obiektów dziedziczonych - problem

Ostatnio zmodyfikowano 2011-08-03 12:21
Autor Wiadomość
Dawidsoni
Temat założony przez niniejszego użytkownika
Wskażniki obiektów dziedziczonych - problem
» 2011-08-03 11:31:00
Witam. Mam takie instrukcje:
C/C++
mocny_klocek * wsk_mocny;
niezniszczalny_klocek * wsk_niezniszczalny;
zwykly_klocek * wsk_zwykly;
int zobacz_ile_jest_obiektow_danego_typu( string nazwa );
void wczytaj_dane_do_danego_typu( string nazwa, klocek * wsk_kloc, int ile_klockow );
....
//Ciało kontruktora klasy:
int ile_zwyklych_klockow = zobacz_ile_jest_obiektow_danego_typu( "zwykly_klocek.png" )
wsk_zwykly = new zwykly_klocek[ ile_zwyklych_klockow ];
wczytaj_dane_do_danego_typu( "zwykly_klocek.png", wsk_zwykly, ile_zwyklych_klockow );
Do funkcji wczytaj_dane_do_danego_typu() będę wysyłał 3 różne typy klocków, które są odziedziczone po klasie klocek.

W tej funkcji będę wczytywał wartości do danego typu klocków. Będę się w niej posługiwał zapisem: wsk_kloc++. Jak mi wiadomo wsk_kloc powiększy się wtedy o wielkość obiektu kloc, a nie o wielkość obiektu, który został wysłany do funkcji. Da się jakoś zrobić, żeby program wiedział, o ile ma powiększyć wsk_kloc.

Jak nie, to muszę zrobić 3 takie same funkcje dla poliformicznych typów.

Słyszałem o szablonach funkcji (czytam Pasję C++, ale jestem na 50 str. i jeszcze nie umiem dobrze się tym posługiwać). Czy gdybym zrobił taki szablon w klasie, to by działało, jak taki szablon globalny?

P-37999
pekfos
» 2011-08-03 11:42:25
ale masz nieczytelny kod..
popraw nazwę tematu.

//szablonów nie ma co stosować bo typ użyty do konkretyzacji musi być znany w czasie kompilacji. użyj kontenerów stl zamiast tablic.
P-38002
Dawidsoni
Temat założony przez niniejszego użytkownika
» 2011-08-03 11:48:41
Kod nie jest ważny. Chodzi o to, że dziedziczę 3 typy klocków, od typu klocek i chcę wysłać te 3 typy do funkcji, której argumentem jest rodzic tych typów. Potem w tej funkcji jak piszę wsk_kloc++ to adres zmienia się o wielkość obiektu wsk_kloc, a nie o wielkość obiektu wysłanego do funkcji.

Czemu nieczytelny kod?
P-38004
pekfos
» 2011-08-03 11:59:24
nie powinno się stosować takich rozwiązań jak tablica z różnymi typami. tablica z definicji jest jednolita. użyj tablicy dwuwymiarowej
klocek ** tab
 w której będą wskaźniki wskazujące na pojedyncze elementy lub kontenera stl ze wskaźnikami.

//twój kod jest nieczytelny bo długie nazwy funkcji zmiennych itp. sprawiają że trudno zorientować się w użytych strukturach języka. naprawdę czytelny kod to taki którego nie trzeba czytać by wiedzieć co robi. w twoim kodzie jest zupełnie odwrotnie, wygląda jak jednolity blok znaków. wnioskuję że masz tam pełno funkcji globalnych dla których musisz nadawać unikalne nazwy. to niewątpliwie zły styl programowania.
P-38006
Dawidsoni
Temat założony przez niniejszego użytkownika
» 2011-08-03 12:06:53
NIE..

Mam z 7 klas, w których mam po kilka funkcji. Mam zero funkcji globalnych. Mi tam długie nazwy funkcji nie przeszkadzają...

A może nie doszedłem jeszcze do tego etapu, gdzie zaczyna się uważać tak jak ty.
P-38007
pekfos
» 2011-08-03 12:09:13
egoista :P pomyśl o innych którzy będą czytać ten kod :P
P-38008
Dawidsoni
Temat założony przez niniejszego użytkownika
» 2011-08-03 12:11:07
Ok. Postaram się o krótsze nazwy. Jednak czasami trudno w kilku znakach wyrazić to, co funkcja ma robić. Do tego chciałem wam pomóc i nazwać funkcje tak, żeby było wiadomo co mają robić:D
P-38010
pekfos
» 2011-08-03 12:15:02
wróćmy do problemu. podałem 2 rozwiązania: stl i tablice wskaźników.
Któreś z nich rozwiązuje problem?
P-38012
« 1 » 2
  Strona 1 z 2 Następna strona