Shai-Hulud Δημοσ. 8 Απριλίου 2016 Δημοσ. 8 Απριλίου 2016 Γεια σας, στη c++ έχω ένα κώδικα αυτής της μορφής: class ca { (διάφορες μεταβλητές και συναρτήσεις ) ca fun(ca a,ca b, ca c) {(επεξεργασία a,b,c) return {a,b,c}; } } int main() { ca x; ca arr[3]; ca pin[10]; (επεξεργασία τιμών) arr=x.fun (pin[0],pin[1],pin[2]); pin[0]=arr[0]; pin[1]=arr[1]; pin[2]=arr[2]; } Ουσιαστικά θέλω να παίρνω 3 τιμές από ένα πίνακα, να τις επεξεργάζομαι και να τις επιστρέφω στον πίνακα. Όμως η fun είναι τύπου ca και δεν τη δέχεται το arr. Δοκίμασα να τη γράψω ως ca* fun(...) αλλά και πάλι δεν το δέχτηκε. Ποια είναι η σωστή σύνταξη; Ή υπάρχει καλύτερος τρόπος να κάνω αυτό που θέλω;
gon1332 Δημοσ. 8 Απριλίου 2016 Δημοσ. 8 Απριλίου 2016 Αν θες να επιστρέψεις πολλαπλές τιμές από συνάρτηση, τότε είτε τις πακετάρεις σε struct, ή περνάς τις διευθύνσεις τους σαν παραμέτρους της συνάρτησης και μέσω αυτών τις αλλάζεις έμεσσα. Αν αυτό που κάνεις τώρα μέσα στη συνάρτηση είναι να δηλώνεις ένα στατικά δεσμευμένο πίνακα, τότε δε θα επιστρέψεις ποτέ κάποια έγκυρη διεύθυνση. Ο πίνακας δεσμεύεται στη stack και μόλις επιστρέψεις από τη συνάρτησή σου, το stack frame της συνάρτησης θα χαθεί. Στη C++, αν χρησιμοποιήσεις vector για αυτό που κάνεις τότε θα είσαι OK. 1
Shai-Hulud Δημοσ. 8 Απριλίου 2016 Μέλος Δημοσ. 8 Απριλίου 2016 (επεξεργασμένο) άρα λες να το κάνω έτσι? class ca { (διάφορες μεταβλητές και συναρτήσεις ) vector<ca> fun(ca a,ca b, ca c) {(επεξεργασία a,b,c) return {a,b,c}; } } int main() { ca x; vector<ca> arr(3); ca pin[10]; (επεξεργασία τιμών) arr=x.fun (pin[0],pin[1],pin[2]); pin[0]=arr[0]; pin[1]=arr[1]; pin[2]=arr[2]; } EDIT: νομίζω οτι δούλεψε, Ο κώδικας έχει μπερδευτεί τόσο (για άλλους λόγους) που πλέον δεν μου εμφανίζει σωικά αποτελέσματα, αλλά τουλάχιστον δεν έχω πλέον errors. Σ' ευχαριστώ gon1332 Επεξ/σία 8 Απριλίου 2016 από Shai-Hulud
menostospitimou Δημοσ. 13 Απριλίου 2016 Δημοσ. 13 Απριλίου 2016 Στη Java μπορείς να περνάς arrays ως variables και return types. Στη C++ αν θυμάμαι καλά μπορείς να περάσεις ως μεταβλητή pointer σε array και το πόσα στοιχεία έχει μέσα.
Moderators Kercyn Δημοσ. 13 Απριλίου 2016 Moderators Δημοσ. 13 Απριλίου 2016 Στη Java μπορείς να περνάς arrays ως variables και return types. Στη C++ αν θυμάμαι καλά μπορείς να περάσεις ως μεταβλητή pointer σε array και το πόσα στοιχεία έχει μέσα. Αυτό είναι στη C.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα