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ć? |
|
m4tx |
» 2011-07-25 13:53:18 A może jeszcze raz, ale po Polsku? Bo nic nie rozumiem z tego... O_o |
|
diego997 Temat założony przez niniejszego użytkownika |
» 2011-07-25 13:55:43 Mamy np funkcje void funkcja( Klasa obiekt ) { int k = 0; k++; }
Klasa element1, element2; teraz wywołuje funkcje 5 razy dla element1, oraz 2 razy dla element2; 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ć |
|
m4tx |
» 2011-07-25 14:03:21 |
|
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 :) ? |
|
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 ) |
|
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 ;) |
|
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ą |
|
« 1 » 2 3 |