Konvertierung

Hoi !

Ich habe folgende Struktur :

struct POINT3D
{
float x, y, z;
};

Und einen Zeiger auf eben jene Struktur :

POINT3D *point;

Nun möchte ich mit malloc() mir während der Laufzeit
Speicherplatz reservieren und dem Zeiger *point zuordnen
(ich will vermeiden, ein statisch angelegtes Feld zu benutzen).

Leider funktioniert point = malloc(x * sizeof(POINT3D)) nicht,
weil malloc() einen Zeiger auf void zurückgibt und der Compiler
einfach nicht von *void nach *POINT3D konvertieren will.

Aber irgendwie muss es doch gehen ! Hüüülfe !!!

Hi MindShape,

da mußt Du wahrscheinlich eine Typkonvertierung durchführen
Ich glaube in C++ geht es so:

point = (POINT3D*)malloc(x * sizeof(POINT3D))

Manfred

Aloha !

Hab ich auch schon versucht, aber der Compiler
sagt dann ebenfalls, daß er nicht von *void nach *POINT3D
konvertieren kann :frowning:

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Leider funktioniert point = malloc(x * sizeof(POINT3D)) nicht

Moeglicherweise ist der Fehler an einer anderen Stelle. Poste mal die relevanten Code-Zeilen direkt so, wie sie sind, bzw die Fehlermeldung.
In c++ gibt es ausserdem den new operator: POINT3d* point = new POINT3d; delete point; oder fuer Arrays POINT3d* pointarray= new POINT3d[x]; delete [] point;

Gruss Moriarty

Hallo MindShape,

versuch mal:

point = (struct POINT3D*)malloc(x * sizeof(struct POINT3D));
^^^^^^ ^^^^^^
Der Compiler meldet Dir, daß er nicht konvertieren kann, weil
er POINT3D nicht kennt, sondern nur struct POINT3D. Vereinfachen kannst Du die Sache mit einem typedef.

typedef struct POINT3D_s
{
int x, y, z;
}
POINT3D;

point = (POINT3D*)malloc(x * sizeof(POINT3D));

Gruß Patrick