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

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

Δημοσ.

Θελω να δωσω το μεγεθος του 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
Δημοσ.

Αυτό συμβαίνει γιατί όταν πας να κάνεις compile, ο compiler δεν ξέρεις πόσο είναι το size_ κι έτσι δεν ξέρει πόσο χώρο να κρατήσει για το Array1. Αυτό που πρέπει να κάνεις είναι να βγάλεις το size_ από το Array1 και να κάνεις ένα new μέσα στον constructor σου για το μέγεθος που θέλεις. Δηλαδή Array1 = new int[size_];

Επίσης, μην ξεχάσεις να φτιάξεις ένα destructor που να αποδεσμεύει τη μνήμη του Array1.

  • Like 1

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

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

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

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

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

Σύνδεση

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

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