Background
I am self-learning C++ from this course, and I am unsure whether I understand why exactly my syntax was wrong.
Problem
Please see the two versions of the PointArray constructor in geometry_test.cpp. The first one gives an error, while the second one comes from the solution manual. In my (probably flawed) understanding, the two versions should be equivalent. Where have I gone wrong? When am I referring to the member attributes points and size? and when am I referring to the input variables points and size?
Thank you for any clarifications or suggestions to references I should check out.
Related query
How might the error message suggest a solution?
Code
geometry_test.h
class Point {
private:
    int x, y;
public:
    Point(int create_x = 0, int create_y = 0) { x = create_x; y = create_y; };
    int getX() const { return x; };
    int getY() const { return y; };
    void setX(const int new_x) { x = new_x; };
    void setY(const int new_y) { y = new_y; };
}; 
class PointArray {
private:
    Point *points;
    int size;
    void resize(int n);
public:
    PointArray(const Point points[], const int size);
    ~PointArray() { delete[] points; };
};
geometry_test.cpp
#include "geometry.h"
#include <iostream>
using std::cout;
PointArray::PointArray(const Point points[], const int size) {         // breaks
    points = new Point[size]; 
    this->size = size;
    for (int i = 0; i < size; ++i) { this->points[i] = points[i]; }
}
/*
PointArray::PointArray(const Point ptsToCp[], const int toCpSz) {      // works
    points = new Point[toCpSz]; 
    size = toCpSz;
    for (int i = 0; i < toCpSz; ++i) { points[i] = ptsToCp[i]; }
}
*/
int main() {
    Point p1(1, 0);
    Point p2(2, 0);
    Point p3(1, 1);
    Point ptarray[3] = {p1, p2, p3};
    PointArray pa(ptarray, 3);
    cout << p1.getX() << ", " << p1.getY() << "\n";
    cout << p2.getX() << ", " << p2.getY() << "\n";
    cout << p3.getX() << ", " << p3.getY() << "\n";
    return 0;
}
Error message
geometry_test(17467,0x11b51adc0) malloc: *** error for object 0x7ffee4705690: pointer being freed was not allocated
geometry_test(17467,0x11b51adc0) malloc: *** set a breakpoint in malloc_error_break to debug
Abort trap: 6
