Problem beim Allokieren eines Objektarrays

Thomas D

Erfahrenes Mitglied
Der unten angehängte Code liefert bei mir folgenden Fehler: error C2679: Binärer Operator '=': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operator vom Typ 'int' akzeptiert (oder keine geeignete Konvertierung möglich)

Code:
OpenHashTable::OpenHashTable(int capacity)
{
	this->capacity = capacity;

	this->hashTable = (HashNode *) malloc (capacity * sizeof (HashNode));

	for (int c = 0; c<capacity; c++)
		this->hashTable[ c] = NULL; //hier tritt der Fehler auf
}

Die Membervariable this->hashTable ist wie folgt definiert:

Code:
HashNode *hashTable;

Die Klasse HashNode ist wie folgt definiert:

Code:
class HashNode //common hash node element - is used by both: Chaining and Open Hash Table
{
public: 
	string key;
	string val;
	HashNode *next;
	
	HashNode (string key, string val); //gets the hash code of the given key
};
 
Hi.

Warum verwendest du malloc? Du solltest new[] und delete[] verwenden! Der new[] Operator sorgt dafür, dass der Konstruktor des Objekts auch ordnungsgemäß aufgerufen wird.

\edit: Und hashTable muß ein Zeiger von Zeigern sein:
C++:
HashNode** hashTable;
...
hashTable = new hashNode*[capacity];
Gruß
 
Zuletzt bearbeitet:
Hab's jetzt mit dem Pointer-auf-einen-Pointer gemacht und es funktioniert. Hatte da ganz einfach einen Denkfehler. Vielen Dank auf jeden Fall :)! ...

BTW: Ich hatte eh zuerst new, hab's dann aber auf malloc() geändert, als es nicht (ge)funktioniert hat.
 
Zurück