[C++] new[]

frager

Erfahrenes Mitglied
Hallo erst einmal,
ich programmiere schon längere Zeit mit C und will jetzt mein Wissen auch auf C++ erweitern;-) . Daher eine Frage:
Wie ersetze ich diesen C-Code durch einen geeigneten C++ Code?
Code:
struct HE
{
	...
};

HE **hes;
int size = 10;
hes = (HE **)calloc(size, sizeof(HE *));
Ich habs schon mal mit
Code:
hes = new (HE*)[size];
probiert, geht aber so wie es aussieht nicht.
 
Willst du wirklich nur Pointer auf HE alloziieren?
Das müsste (theoretisch) so funktionieren, wie du es versucht hast:
Code:
 hes = new HE*[ anzahl ];
Da ich selbst allerdings (wenn schon C++, dann richtig!) eher std::vector anstelle bzw. als Wrapper für das C-Array verwenden würde (was ich auch dir empfehle), kann es sein, das ich mich da vertue. Wer will schon ein Array von Pointern? Ich nicht. Ich will eher einen std::vector von Pointern. ;)
 
Ja, danke.
Hab mir den Vektor in MSDN angeschaut, sieht interessant aus, werde ihn bei nächster Gelegenheit ausprobieren.
Bei meinem Beispiel aber muss ich die dynamische Allozierung verwenden, weil das eine Aufgabe aus einem Buch ist. (Die schlauen Autoren haben bei ihrer Lösung calloc verwendet)
new HE*[ size ] funktioniert übrigens nicht, weder beim GNU- noch beim Microsoft-compiler.
Hat jemand noch Vorschläge?
 
Klar, man kann das Problem umgehen, indem man die nötigen Bytes auf andere Weise alloziiert:
Code:
hes = (HE **)new char[ sizeof( HE* ) * anzahl ];
(Hab's nicht getestet!)
 
Zurück