Ok: Not perfect but a good attempt:
First off scoping rules:
if you have a class variable e.g.
class A {
int index;
}; Then that variable is effectively hidden by this
class A
{
int Index;
void run(int Index) const { Index+=20; }
};
Note that run does not change Index in the class but a local value.
Hence
void SetX (float x) {x=x;} is wrong. You could have (a) seen this by writing the function using const. e.g.
void SetX(const float Xvalue) { x=Xvalue; }
Had you done x=x; then the compile would have complained.
B) you don't qualify classes within a definition. e.g
for your destructor Point::~Point() is wrong since it is withn the definition.
C) Scope again!!! pPoint is declared in constructor. it is not a member of the class. So it goes out of scope at the end of the
Structure constructor. Lost memory. Additionally you cant delete it later
Finally: You are getting boged down in new/delete etc. Please, use OO first. That means you write a Plane class. That takes one plane.
A plane can then have a number of points (if it is a limited range)
or three if it is infinite. (or a normal + distance if you like).
That way you will find that you enrich your point class to have dot product etc. and Planes can be stored in a simple flat array or vector.