foo
struct Point3D{ float* Coordinates; Point3D(float x, float y, float z){ Coordinates= (float*)malloc(3* sizeof(float)); *(Coordinates+0)=x; *(Coordinates+1)=y; *(Coordinates+2)=z; } Point3D(const Point3D& p){ Coordinates= (float*)malloc(3* sizeof(float)); memcpy(Coordinates,p.Coordinates,3* sizeof(float)); } Point3D& operator = (const Point3D& p){ if (this==& p) return *this; memcpy(Coordinates,p.Coordinates,3* sizeof(float)); return *this; } float operator[] (const int i){ return *(Coordinates+i); } float operator[] (const int i) const{ return *(Coordinates+i); } ~Point3D(){ free(Coordinates); Coordinates= nullptr; } };