Ich habe eine Klasse, in der es geschützten Abschnitt ist Ich muss ein Array mit unbekannter Größe deklarieren (die Größe wird dem Konstruktor als Parameter gegeben), also habe ich mich umgesehen und gefunden darauf hin, dass die bestmögliche Lösung ist ein Array von Zeigern zu erklären, jedes Element auf einer ganzen Zahl:Array von Zeigern und Zeiger auf ein Array in C++
int* some_array_;
und einfach im Konstruktor werde ich die „neue“ Operator:
some_array_ = new int[size];
und es hat funktioniert, meine Frage ist: kann ich ein Array in einer Klasse deklarieren ohne das si zu definieren ze? und wenn ja, wie mache ich das, wenn nicht, warum funktioniert es dann für Zeiger und nicht für ein normales Array?
EDIT: Ich weiß vecotrs das Problem zu lösen, aber ich kann sie nicht auf meiner HW verwenden
Wahrscheinlich möchten Sie keine geschützten Daten - es ist fast immer eine schlechte Idee. Und verwenden Sie std :: vector, nicht ein explizit dynamisch zugeordnetes Array. –
Es gibt 2 Möglichkeiten, ein Array zu definieren ... 1. Mit einer Größe, die Sie beim Kompilieren von Int Name [10] definieren, befindet es sich auf dem Stack ... Dort brauchen Sie den Löschbefehl nicht, da er automatisch gelöscht wird wenn du aus dem Raum gehst. 2. Ein dynamisches Array int * Name = new int [n], dann ist es auf dem Heap. So bleibt es, bis Sie delete sagen [] Name – Thomas
'some_array_' ist kein Array von Zeigern, es ist ein Zeiger, der auf das erste Element eines Arrays zeigt. Ein Array von Zeigern wäre "int * x [Größe]"; ein Zeiger auf ein Array 'int (* x) [Größe]'. – molbdnilo