Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας, στη 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(...) αλλά και πάλι δεν το δέχτηκε. Ποια είναι η σωστή σύνταξη;  Ή υπάρχει καλύτερος τρόπος να κάνω αυτό που θέλω;

Δημοσ.

Αν θες να επιστρέψεις πολλαπλές τιμές από συνάρτηση, τότε είτε τις πακετάρεις σε struct, ή περνάς τις διευθύνσεις τους σαν παραμέτρους της συνάρτησης και μέσω αυτών τις αλλάζεις έμεσσα.

 

Αν αυτό που κάνεις τώρα μέσα στη συνάρτηση είναι να δηλώνεις ένα στατικά δεσμευμένο πίνακα, τότε δε θα επιστρέψεις ποτέ κάποια έγκυρη διεύθυνση. Ο πίνακας δεσμεύεται στη stack και μόλις επιστρέψεις από τη συνάρτησή σου, το stack frame της συνάρτησης θα χαθεί. Στη C++, αν χρησιμοποιήσεις vector για αυτό που κάνεις τότε θα είσαι OK.

  • Like 1
Δημοσ. (επεξεργασμένο)

άρα λες να το κάνω έτσι?

 

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

Επεξ/σία από Shai-Hulud
Δημοσ.

Στη Java μπορείς να περνάς arrays ως variables και return types.

Στη C++ αν θυμάμαι καλά μπορείς να περάσεις ως μεταβλητή pointer σε array και το πόσα στοιχεία έχει μέσα.

  • Moderators
Δημοσ.

Στη Java μπορείς να περνάς arrays ως variables και return types.

Στη C++ αν θυμάμαι καλά μπορείς να περάσεις ως μεταβλητή pointer σε array και το πόσα στοιχεία έχει μέσα.

 

Αυτό είναι στη C.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...