| 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] | 
		 | 
	
	
		 |