Prethodna tema :: Sljedeća tema |
Autor/ica |
Poruka |
mibo Forumaš(ica)


Pridružen/a: 04. 10. 2007. (14:52:50) Postovi: (51)16
Spol: 
Lokacija: /var/tmp
|
Postano: 16:47 pon, 20. 10. 2008 Naslov: Pseudopolimorfizam funkcija u C-u |
|
|
Mogu li (i kako) imitirati [url=http://en.wikipedia.org/wiki/Type_polymorphism]polimorfne funkcije (function overloading?)[/url] (kao u npr. C#) u C-u?
[size=9]Konkretno; želio bih napraviti funkciju MAKE_NULL koja će ovisno o tipu parametra stvoriti LIST ili STACK (želim zadržati kompatibilnost sa [url=http://web.math.hr/nastava/spa/files/salabahter.pdf]šalabahterom[/url] -- inače lako je staviti npr. MAKE_NULL_L i MAKE_NULL_S funkcije ;-) gdje prva stvara LIST, a druga STACK).[/size]
P.S. Moderator slobodno preseli topic, ako ne pripada ovdje.
Mogu li (i kako) imitirati polimorfne funkcije (function overloading?) (kao u npr. C#) u C-u?
Konkretno; želio bih napraviti funkciju MAKE_NULL koja će ovisno o tipu parametra stvoriti LIST ili STACK (želim zadržati kompatibilnost sa šalabahterom – inače lako je staviti npr. MAKE_NULL_L i MAKE_NULL_S funkcije gdje prva stvara LIST, a druga STACK).
P.S. Moderator slobodno preseli topic, ako ne pripada ovdje.
_________________ WAR IS PEACE
FREEDOM IS SLAVERY
IGNORANCE IS STRENGTH
George Orwell: 1984
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 18:41 pon, 20. 10. 2008 Naslov: Re: Pseudopolimorfizam funkcija u C-u |
|
|
[quote="mibo"]Mogu li (i kako) imitirati [url=http://en.wikipedia.org/wiki/Type_polymorphism]polimorfne funkcije (function overloading?)[/url] (kao u npr. C#) u C-u?[/quote]
Mislim da se moze, barem u nekoj mjeri, ali da je chupavo. :?
[quote="mibo"]Konkretno; želio bih napraviti funkciju MAKE_NULL koja će ovisno o tipu parametra stvoriti LIST ili STACK (želim zadržati kompatibilnost sa [url=http://web.math.hr/nastava/spa/files/salabahter.pdf]šalabahterom[/url] -- inače lako je staviti npr. MAKE_NULL_L i MAKE_NULL_S funkcije ;-) gdje prva stvara LIST, a druga STACK).[/quote]
Pada mi na pamet funkcija koja radi s netipiziranim pointerima ([tt]void*[/tt]), pa onda nekako "pametno" zakljucuje sto ti zelis (ali nije ogranicena ulaznim i povratnim tipovima). :) Idealno je vjerojatno sloziti funkcije [tt]LIST_*[/tt] i [tt]STACK_*[/tt], pa onda neke bez ovog "[tt]LIST_[/tt]"/"[tt]STACK_[/tt]" koje ce, ovisno o parametrima, pozivati sto vec treba. :)
Nisam pokusavao... za takve eskapade su pristojniji jezici negoli je to C. ;)
[quote="mibo"]P.S. Moderator slobodno preseli topic, ako ne pripada ovdje.[/quote]
Moderator to slobodno napravi i bez tvoje dozvole. :P
Mislim da se moze, barem u nekoj mjeri, ali da je chupavo.
mibo (napisa): | Konkretno; želio bih napraviti funkciju MAKE_NULL koja će ovisno o tipu parametra stvoriti LIST ili STACK (želim zadržati kompatibilnost sa šalabahterom – inače lako je staviti npr. MAKE_NULL_L i MAKE_NULL_S funkcije gdje prva stvara LIST, a druga STACK). |
Pada mi na pamet funkcija koja radi s netipiziranim pointerima (void*), pa onda nekako "pametno" zakljucuje sto ti zelis (ali nije ogranicena ulaznim i povratnim tipovima). Idealno je vjerojatno sloziti funkcije LIST_* i STACK_*, pa onda neke bez ovog "LIST_"/"STACK_" koje ce, ovisno o parametrima, pozivati sto vec treba.
Nisam pokusavao... za takve eskapade su pristojniji jezici negoli je to C.
mibo (napisa): | P.S. Moderator slobodno preseli topic, ako ne pripada ovdje. |
Moderator to slobodno napravi i bez tvoje dozvole.
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
mibo Forumaš(ica)


Pridružen/a: 04. 10. 2007. (14:52:50) Postovi: (51)16
Spol: 
Lokacija: /var/tmp
|
Postano: 19:26 pon, 20. 10. 2008 Naslov: Re: Pseudopolimorfizam funkcija u C-u |
|
|
[quote="vsego"]
Pada mi na pamet funkcija koja radi s netipiziranim pointerima ([tt]void*[/tt]), pa onda nekako "pametno" zakljucuje sto ti zelis[/quote]
Tak' sam i mislio; [tt]void*[/tt] tip parametra.To 'pametno zaključivanje' bi bila funkcija (operator?) á la [url=http://en.wikipedia.org/wiki/Typeof]typeof[/url], koje nema u C-u :sigh:
[quote="vsego"][quote="mibo"]P.S. Moderator slobodno preseli topic, ako ne pripada ovdje.[/quote]Moderator to slobodno napravi i bez tvoje dozvole. :P[/quote] :okgreen:
vsego (napisa): |
Pada mi na pamet funkcija koja radi s netipiziranim pointerima (void*), pa onda nekako "pametno" zakljucuje sto ti zelis |
Tak' sam i mislio; void* tip parametra.To 'pametno zaključivanje' bi bila funkcija (operator?) á la typeof, koje nema u C-u
vsego (napisa): | mibo (napisa): | P.S. Moderator slobodno preseli topic, ako ne pripada ovdje. | Moderator to slobodno napravi i bez tvoje dozvole.  |
_________________ WAR IS PEACE
FREEDOM IS SLAVERY
IGNORANCE IS STRENGTH
George Orwell: 1984
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
mibo Forumaš(ica)


Pridružen/a: 04. 10. 2007. (14:52:50) Postovi: (51)16
Spol: 
Lokacija: /var/tmp
|
Postano: 19:44 pon, 20. 10. 2008 Naslov: :-D |
|
|
@Luuka: Jedva čekam :-D
@Luuka: Jedva čekam
_________________ WAR IS PEACE
FREEDOM IS SLAVERY
IGNORANCE IS STRENGTH
George Orwell: 1984
|
|
[Vrh] |
|
vsego Site Admin


Pridružen/a: 06. 10. 2002. (22:07:09) Postovi: (3562)16
Spol: 
Lokacija: /sbin/init
|
Postano: 19:48 pon, 20. 10. 2008 Naslov: Re: Pseudopolimorfizam funkcija u C-u |
|
|
[quote="mibo"][quote="vsego"]Pada mi na pamet funkcija koja radi s netipiziranim pointerima ([tt]void*[/tt]), pa onda nekako "pametno" zakljucuje sto ti zelis[/quote]
Tak' sam i mislio; [tt]void*[/tt] tip parametra.To 'pametno zaključivanje' bi bila funkcija (operator?) á la [url=http://en.wikipedia.org/wiki/Typeof]typeof[/url], koje nema u C-u :sigh:[/quote]
Nema [tt]typeof()[/tt] u C-u i mislim da ga ne moze niti biti, jer je [tt]void*[/tt] (jedina "netipizirana" stvar u C-u) jednostavno adresa nekakvih podataka i C nema odakle shvatiti kakvi su to podaci. :? Ako ga castas kao [tt]int[/tt], bit ce [tt]int[/tt]; ako ga castas kao nesto drugo, bit ce to nesto drugo. :) Taj stos sam koristio u [url=http://degiorgi.math.hr/prog1/apps/prikaz.php]alikaciji za prikaz brojeva u racunalu[/url]. :D
Ne, "nesto pametno" bi moralo biti na racun paramet(a)ra... vjerojatno dodatnog parametra, no mozda mozes to i izbjeci (barem ponekad). :) Pogledaj [url=http://www.opengroup.org/onlinepubs/007908799/xsh/varargs.h.html][tt]varargs.h[/tt][/url], mozda ti pomogne. 8)
@Luuka: Ti se nisi nikada igrao s PERLom, Pythonom ili tako nekim naprednim jezikom, je l' da? ;)
mibo (napisa): | vsego (napisa): | Pada mi na pamet funkcija koja radi s netipiziranim pointerima (void*), pa onda nekako "pametno" zakljucuje sto ti zelis |
Tak' sam i mislio; void* tip parametra.To 'pametno zaključivanje' bi bila funkcija (operator?) á la typeof, koje nema u C-u  |
Nema typeof() u C-u i mislim da ga ne moze niti biti, jer je void* (jedina "netipizirana" stvar u C-u) jednostavno adresa nekakvih podataka i C nema odakle shvatiti kakvi su to podaci. Ako ga castas kao int, bit ce int; ako ga castas kao nesto drugo, bit ce to nesto drugo. Taj stos sam koristio u alikaciji za prikaz brojeva u racunalu.
Ne, "nesto pametno" bi moralo biti na racun paramet(a)ra... vjerojatno dodatnog parametra, no mozda mozes to i izbjeci (barem ponekad). Pogledaj varargs.h, mozda ti pomogne.
@Luuka: Ti se nisi nikada igrao s PERLom, Pythonom ili tako nekim naprednim jezikom, je l' da?
_________________ U pravilu ignoriram pitanja u krivim topicima i kodove koji nisu u [code]...[/code] blokovima.
Takodjer, OBJASNITE sto vas muci! "Sto mi je krivo?", bez opisa u cemu je problem, rijetko ce zadobiti moju paznju. 
|
|
[Vrh] |
|
Luuka Forumaš(ica)


Pridružen/a: 13. 02. 2007. (20:34:54) Postovi: (925)16
Spol: 
Lokacija: Hakuna Matata
|
|
[Vrh] |
|
|