TheRammer Δημοσ. 22 Νοεμβρίου 2014 Δημοσ. 22 Νοεμβρίου 2014 Θελω να δωσω το μεγεθος του array ενος class μεσα απο ενα constructor αλλα μου βγάζει errors . ο κωδικας : τα errors : C:\Users\Shady\Desktop>g++ w.cxx -o p w.cxx:20:13: warning: non-static data member initializers only available with -s td=c++11 or -std=gnu++11 [enabled by default] int index=0; ^ w.cxx:19:7: error: invalid use of non-static data member 'class1::size_' int size_; ^ w.cxx:21:14: error: from this location int Array1[size_]; ^ w.cxx: In member function 'void class1::function1(int)': w.cxx:15:4: error: 'Array1' was not declared in this scope Array1[index]=number; ^ #include <stdlib.h> #include <stdio.h> using namespace std; class class1 { public : class1(int size) { size_=size; } void function1(int number) { Array1[index]=number; index++; } private: int size_; int index=0; int Array1[size_]; }; int main() { class1 obj(5); return 0; }
Moderators Kercyn Δημοσ. 22 Νοεμβρίου 2014 Moderators Δημοσ. 22 Νοεμβρίου 2014 Αυτό συμβαίνει γιατί όταν πας να κάνεις compile, ο compiler δεν ξέρεις πόσο είναι το size_ κι έτσι δεν ξέρει πόσο χώρο να κρατήσει για το Array1. Αυτό που πρέπει να κάνεις είναι να βγάλεις το size_ από το Array1 και να κάνεις ένα new μέσα στον constructor σου για το μέγεθος που θέλεις. Δηλαδή Array1 = new int[size_]; Επίσης, μην ξεχάσεις να φτιάξεις ένα destructor που να αποδεσμεύει τη μνήμη του Array1. 1
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα