pointer-to-object casting και ISO C++

Giorgos Keramidas keramida at ceid.upatras.gr
Wed Mar 1 14:42:22 EET 2006


On 2006-03-01 08:34, Πιστιόλης Κωνσταντίνος <pistiolis at ts.sch.gr> wrote:
> Δεν είναι καλή προσέγγιση να μετατρέπεις κάτι σε void * για να το
> περάσεις σε μια συνάρτηση. Δεν ξέρω τι θέλεις να κάνεις, αλλά στις
> περισσότερες περιπτώσεις δεν υπάρχει λόγος να απενεργοποιείς τους
> ελέγχους τύπων της C. Και καλά να μετατρέψεις δεδομένα.

Καλά, ας μην είμαστε κι απόλυτοι.  Για παράδειγμα:

Είναι ένας καλός τρόπος όμως να γράψει κανείς `generic functions'.
Κι έχει ήδη χρησιμοποιηθεί στο ίδιο το standard της C:

  | QSORT(3)           FreeBSD Library Functions Manual           QSORT(3)
  |
  | NAME
  |      qsort, qsort_r, heapsort, mergesort -- sort functions
  |
  | LIBRARY
  |      Standard C Library (libc, -lc)
  |
  | SYNOPSIS
  |      #include <stdlib.h>
  |
  |      void
  |      qsort(void *base, size_t nmemb, size_t size,
  |          int (*compar)(const void *, const void *));
  | [...]
  |
# | STANDARDS
# |      The qsort() function conforms to ISO/IEC 9899:1990 (``ISO C90'').
  |
  | FreeBSD 7.0               September 30, 2003               FreeBSD 7.0

Δεν υπάρχει καλύτερος τρόπος να γραφτεί μια generic sorting function, που
να μη χρησιμοποιεί `void *' pointers και να μην είναι υποχρεωτικό να
φτιάξει κανείς μια ειδική sorting function για κάθε δυνατό τύπο που υπάρχει
ή θα υπάρξει ποτέ.




More information about the Linux-greek-users mailing list