ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
526
526
EMPFEHLEN
-
01.06.05 12:46 #1
- Registriert seit
- Oct 2004
- Beiträge
- 14
Hi !
Mein Programm soll unter anderem in einem Array Elemente verändern, bzw hinzufügen und entfernen.
Ich habe mir eine Klasse erstellt Array erstellt mit einem Konstruktor Array.
Das zugehörige array.h:
Und hier das array.cc:Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
#ifndef ARRAY_H #define ARRAY_H #include <iostream> using namespace std; Class Array { public: Array( const unsigned int n ); ~Array(); private: void initArray(); double * x_Array; unsigned int m_N; } #endif
Nun meldet mir der gcc Kompiler an roter StelleCode :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#include "array.h" Array::Array( const unsigned int n ) { m_N = n; initArray(); } Array::~Array() { if( x_Array ) delete( x_Array ); } void Array::initArray() { [color=Red] x_Array = new double[]; [/color] }
error: expected primary-expression before ']' token
Die Kopilierung läuft durch, wenn ich die Dimension im initArray mit
x_Array = new double[m_N];
reinsetze.
Aber dann kann ich die Grösse des Arrays nicht mehr ändern, denn dann bekomme ich, wenn ich Element in das Array hinzufüge, ein Segmantation Fault.
Ich hoffe, dass ich mein Problem halbwegs verständlich beschireben habe und das jemand eine Lösung kennt.
-
01.06.05 12:51 #2
- Registriert seit
- Apr 2002
- Ort
- Delmenhorst (Niedersachsen)
- Beiträge
- 3.567
moin
Also du musst dort, wenn du es so machst auf jedenfall na Größe angeben.
Kann man nicht nachträglich noch Speicher hinzu allozieren?!
mfg
umbrasaxum
-
01.06.05 13:00 #3
- Registriert seit
- Oct 2004
- Beiträge
- 14
Ich habe gerade im Buch geschaut und leider nichts zur Speicheralloziierung gefunden

Weisst Du wie das geht?
Wie muss ich das Programm verändern, damit ich da nachträglich Elemente hinzufügen kann?
-
Es gibt da mehrere Möglichkeiten dies zu tun...
Ein Stichwort wäre LinkedList (googlen oder Boardsuche). Nachteile hier sind langsamer Zugriff aber schnelles Einfügen
Andere Methode (wohl eine sehr einfach): Du erzeugst das Array am Anfang mit einer bestimmten Anzahl von Werten (im Klassenaufruf definiert). Wenn man nun ein Index aufruft der größer ist als die aktuelle Größe des Arrays erzeugst du im Heap ein neues Array mit der neuen Größe. Du kopierst das alte Array in das neue und gibst den Speicher vom alten frei. Nachteil: Langsames einfügen Elemente, aber schneller Zugriff auf bestehende Elemente.
Soviel zur Theorie.
Ähnliche Themen
-
C#: Array ohne definierte länge:
Von MSuter im Forum C/C++Antworten: 8Letzter Beitrag: 06.12.10, 10:01 -
Array im Array ohne Mengenangaben
Von kuhlmaehn im Forum .NET CaféAntworten: 8Letzter Beitrag: 11.07.07, 14:28 -
Problem mit Grössenangabe von Bildern in ActionScript
Von Orphelina im Forum Flash PlattformAntworten: 18Letzter Beitrag: 26.07.05, 16:43 -
grössenangabe bei Bildern
Von suid im Forum HTML & XHTMLAntworten: 4Letzter Beitrag: 16.04.02, 16:09 -
Array - mit => oder mit ohne =>
Von Tim C. im Forum PHPAntworten: 5Letzter Beitrag: 27.01.02, 02:23





Zitieren
)
Login





