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

Przesyłanie tego samego obiektu do funkcji.

Ostatnio zmodyfikowano 2016-03-14 10:06
Autor Wiadomość
skjeleton
Temat założony przez niniejszego użytkownika
Przesyłanie tego samego obiektu do funkcji.
» 2016-03-14 06:00:16
Cześć,
mam pytanie nie dotyczące żadnego konkretnego przykładu, tylko bardziej o sposób, w jaki programiści rozwiązują problemy.

Tworzę obiekt klasy "Gra", który zawiera kilka innych klas. Obiekt ten to jakby "skrzynka" na wszystkie dane dotyczące gry (Statystyki bohatera, ekwipunek, triggery, stosunki z innymi bohaterami itp.). Występuje tylko jeden obiekt tej klasy w całym programie. Czy to działanie słuszne, czy robię źle?

Drugie - mam obiekt zadeklarowany w main. Nazwijmy go "Wazne". Będę z niego korzystał niemal w każdej funkcji a uciążliwe jest pisanie na końcu wywołania każdej [ funkcja(arg1, arg2, Wazne) ], [ funkcja(arg, Wazne) ]. Czy nie ma opcji, żeby to "Wazne" zniknęło z każdego wywołania? Chodzi mi o to, że zawsze te funkcja mają korzystać tylko z tego jednego obiektu jego klasy "Wazne", tak jak np. wyżej było z "Gra", jest tylko jedna. Konkretnie chodzi mi o obiekt w WinAPI, który jest przesyłany "z linii poleceń" i nie da się go zadeklarować globalnie.
P-145992
darko202
» 2016-03-14 08:42:51
od 1.
idea jest dobra - dlaczego masz wątpliwości ?

od 2.
>> chodzi mi o obiekt w WinAPI, który jest przesyłany "z linii poleceń" i nie da się go zadeklarować globalnie.

zastanów się nad znaczeniem "nie da się"  :)
korzystasz z obiektu więc jest widoczny w programie

A.
* Tworzysz obiekt globalny
* Wypełniasz go danymi z obiektu pobranego z linii poleceń

B.
* globalny wskaźnik na taki pobrany obiekt




P-145994
skjeleton
Temat założony przez niniejszego użytkownika
» 2016-03-14 09:07:48
Mam wątpliwości ponieważ ta klasa jest trochę bezużyteczna. Znaczy oprócz gromadzenia wszystkich obiektów składowych to nie ma zbytnio zastosowania, bo metody i tak są w tych obiektach składowych.

Inne pytanie - uczę się WinAPI i mam wątpliwości dotyczące wszystkich tych klas. Trochę mnie to przytłacza, gdy widzę, że na jeden, z pozoru ten sam obiekt, jest kilka różnych nazw. Chodzi mi o to, że nie wiem, jak to będzie działać. Jednak WinAPI to trochę inny sposób pisania i klasy oraz funkcje monitorują system. Czy tworzenie nowych obiektów nie wpłynie jakoś negatywnie? W sensie czy np. nie przekopiuje to wskaźników i zmiana jednej zmiennej pod wskaźnikiem zmieni też wartość w innym obiekcie? Nie rozumiem deklaracji i definiowania tych klas.
P-145995
darko202
» 2016-03-14 10:06:00
od 1.
jeśli tworzysz i używasz jej jak poniżej to nie jest bezużyteczna
C/C++
#include "Gra.h"

using namespace std;

int main()
{
   
    //B. Tworzymy klasę Gra
    Gra g;
    g.Nowa();
   
    while( g.Ruch() )
    {
        ...
    }
}

od 2.
język C++ ewoluował i niestety kolejne wersje - standardy - nadal funkcjonują.
Dokumentacja, przykłady itd.
Na początku nauki sieją zamieszanie, bo wszystko to C++, a wprowadzasz pobrany skądś przykład i zdziwienie - nie działa. Inny kompilator, funkcje z różnych standardów

niestety nie ma na to rady, poza konsekwentnym zyskiwaniem świadomości na czym w danym momencie pracujemy. 

Narzekanie nic nie pomoże :-)


>> Czy tworzenie nowych obiektów nie wpłynie jakoś negatywnie? W sensie czy np. nie przekopiuje to wskaźników i zmiana jednej zmiennej pod wskaźnikiem zmieni też wartość w innym obiekcie?


znany przykład
* deklaruje wskaźnik na zmienną
* rezerwuje pamięć do tej zmiennej
* deklaruję 2 wskaźnik na ta sama zmienną
* zwalniam pamięć używając 2 wskaźnika

- zdziwienie, że pierwszy wskaźnik nie wskazuje już na tą zmienną (zwolniona pamięć)

tu trzeba używać rozumu :-)


Błąd nie jest tragedią, jeśli umiemy uczyć się na błędach
w tym procesie bardzo przydaje się znajomość techniki debugowania programów. 



>> Nie rozumiem deklaracji i definiowania tych klas. 
z czasem przyjdzie, ale samo do głowy nie wpadnie

musisz zadać bardziej konkretne pytanie
tak ogólne to chyba Twój zły nastrój

"
- Dziś jest piękny słoneczny dzień
- rozgryzę tą jedną funkcję !
- potem drugą ?
...
- zaczął padać deszcz
- nie szkodzi - już coś wiem :)
"

Powodzenia :-)
P-145997
« 1 »
  Strona 1 z 1