lion2486 Δημοσ. 15 Φεβρουαρίου 2014 Δημοσ. 15 Φεβρουαρίου 2014 Καλησπέρα, ασχολούμαι με μια εργασία C (ανάπτυξη λογισμικού, πέρυσι δεν μου έκατσε σε C++ και τώρα είπα να το κάνω με C για να έχω πιο πολλά προβλήματα ) Το πρόβλημά μου σε αυτό το σημείο είναι (αφού έχω φάει ώρες και σκέψεις αρκετές) είναι ότι μετά από τις 8 υλοποιήσεις σε λίστες που έφτιαξα, δέντρα και πολλές άλλες δομές μου χρειάστηκε μια ουρά... Ε λέω θα φτιάξω μια, έφτιαξα λοιπόν μια λίστα που κρατάει έναν void * για να τη χρησιμοποιήσω σε διάφορες λειτουργίες από εδώ και πέρα. Μετά έφτιαξα και της λειτουργίες της Ουράς μου και έτοιμη! Το θέμα μου είναι ότι στις συναρτήσεις διαγραφής το κάθε λογής δεδομένο (struct σχεδον όλα) θέλει δικιά του συνάρτηση. Διάβασα πάλι λοιπόν τους δείκτες σε συνάρτηση (που δεν είχα χρησιμοποιήσει ποτέ μου σοβαρά) και έβαλα την παράμετρο ως void (*DestroyFunction)(void * item) Το πρόβλημά μου τώρα είναι ότι θέλω να κάνω cast τα ορίσματα που θα δώσω γιατί δεν παίρνουν παραμέτρους void * αλλά άλλου τύπου. Το έψαξα ελάχιστο τώρα αλλά δεν έχω πολύ κουράγιο.. Ευχαριστώ όλους τους καλοπροαίρετους! Υ.Γ.: Τις παραμέτρους των συναρτήσεων υποτίθεται δεν πρέπει να τις πειράξουμε, για αυτό ψάχνομαι σε τέτοια λύση.
παπι Δημοσ. 15 Φεβρουαρίου 2014 Δημοσ. 15 Φεβρουαρίου 2014 qsort c int comp(const void* a,const void* { int _a = *(const int*)a; int _b = *(const int*)b; return _a - _b; } int main() { int arr[] = { 2,4,1,6,5,11}; qsort(arr,_countof(arr),sizeof(*arr),comp); return 0; }
lion2486 Δημοσ. 15 Φεβρουαρίου 2014 Μέλος Δημοσ. 15 Φεβρουαρίου 2014 ναι οκ, αν κατάλαβα καλά κάνεις χρήση ενός δείκτη. εγώ αυτό που προσπαθώ είναι να βάλω στον δείκτη που είναι ορισμένος ως void (*DestroyFunction)(void * item) να του εκχωρήσω τη συνάρτηση void DestroyDocument(Document * doc); αλλά να την κάνω cast την παράμετρο που παίρνει και να το βλέπει απλά ως void *
παπι Δημοσ. 15 Φεβρουαρίου 2014 Δημοσ. 15 Φεβρουαρίου 2014 int comp(const int* a,const int* { return *a - *b; } typedef int (*QSORT_COMP)(const void*,const void*); int main() { int arr[] = { 2,4,1,6,5,11}; qsort(arr,_countof(arr),sizeof(*arr), (QSORT_COMP)comp); return 0; } ????
lion2486 Δημοσ. 15 Φεβρουαρίου 2014 Μέλος Δημοσ. 15 Φεβρουαρίου 2014 νομίζω ότι δούλεψε, μου το έβγαλε το warning.Ευχαριστώ πολύ...
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα