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

unikatowy argument funkcji

Ostatnio zmodyfikowano 2011-07-25 16:39
Autor Wiadomość
diego997
Temat założony przez niniejszego użytkownika
unikatowy argument funkcji
» 2011-07-25 13:50:59
Załużmy że mam funckje która jako argument przyjmuje pewną klasę(nie wiem czy to poprawnie napisałęm, może obiekt pewnej klasy) i teraz instrukcje które są zamieszczone w tej funkcji mają działać na rzecz tylko tego konkretnego argumentu, jeżeli bym przesłał inny argument to funkcja nie przypisuje mu wartości które zostały zmienione na rzecz pierwszego argumentu tylko te zdefiniowane od początku. No i jeszcze na koniec pytanie do całości, czy właśnie w tym momencie funkcje przestają mieć swoje zastosowanie i z pomocą przychodzą klasy. Czy jednak da się to zrobić?
P-36944
m4tx
» 2011-07-25 13:53:18
A może jeszcze raz, ale po Polsku? Bo nic nie rozumiem z tego... O_o
P-36946
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-25 13:55:43
Mamy np funkcje

C/C++
void funkcja( Klasa obiekt )
{
    int k = 0;
    k++;
   
}


Klasa element1, element2;

teraz wywołuje funkcje 5 razy dla element1, oraz 2 razy dla element2;
C/C++
funkcja( element1 );
funkcja( element1 );
funkcja( element1 );
funkcja( element1 );
funkcja( element1 );

funkcja( element2 );
funkcja( element2 );
Chciałbym, aby dla element1 k = 5;
a dla element2 k = 2;

Wiem że funkcja i całość bezsensu chodzi o idee czy da się coś takiego zrobić



P-36948
m4tx
» 2011-07-25 14:03:21
Da się.

» Kurs C++Wskaźniki lekcja
P-36949
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-25 14:09:04
Masakra w c++ jest wszystko :D.

Może napiszę w czym chciałbym aby to miało zastosowanie, i jeszcze raz mi napiszesz czy moge to zrobić używając wskaźników.

Mam do poruszania 10 obiektów, i nie chciałbym aby każdy obiekt poruszał się tak cały czas o tyle samo jednostek i w tym samym momencie.

Dlatego w funkcji miałbym np instrukcję:

static float x=1;
static float y=1;

Obiekt.Move(x,y);

++x, ++y;

I jeżeli przesłał bym do funkcji obiekt1 10 razy a potem obiekt2 2 razy to nie chciał bym mieć sytuacji żeby obiekt2 przesunął się o 10 jednostek tylko znowu o 1 itd.
Wiesz już o co chodzi :) ?
P-36950
m4tx
» 2011-07-25 14:18:52
No to czegoś takiego już (chyba) nie zrobisz. Musiałbyś dać coś takiego:

void funkcja( Klasa obiekt, float x, float y )
P-36951
waxx
» 2011-07-25 14:21:26
Mam do poruszania 10 obiektów, i nie chciałbym aby każdy obiekt poruszał się tak cały czas o tyle samo jednostek i w tym samym momencie.

To dodaj sobie w klasie bazowej obiektu jakiegos stirnga/enuma okreslajacego typ obiektu

enum {
GRACZ = 0,
SZKIELET,
INNYMOBEK,
POCISK

};

class ObjectBase {
int Type;


};

i te twoje Move niech przyjmuje argument ObjectBase* obj

if(obj->Type == GRACZ) robisz cos tam itd;

ale jak dla mnie masz blad projektowy, po co osobna funkcja ma ruszac obiektami, one same sie powinny ruszac ;)
P-36952
diego997
Temat założony przez niniejszego użytkownika
» 2011-07-25 14:26:10
nie wiem czemu błąd przecież funkcja dużo mniej miejsca zajmuje, a obiekty się tak samo poruszają
P-36953
« 1 » 2 3
  Strona 1 z 3 Następna strona