Ошибка LNK2001 , LNK1120 неразрешенный внешний символ

Здраствуйте, с горем пополам написал код по заданию, но в итоге он получился неправильным. Помогите пожалуйста, что не так и где накосячил Код

//Класс PolyObjectNumber(Полиобъект(фигура, состоящая из нескольких линий)) (1).
//Поля: массив точек с координатами(X, Y)(static).
//Действия : инкремент, умножение(координат на число) (4).
//Найти периметр полиобъекта(сумма расстояний между точками массива) (6).
//Осуществить сортировку массива объектов PolyObjectNumber по периметру(9).

#include<Windows.h>
#include<math.h>
#include<cstdlib>
#include<iostream>
#include<iomanip>
#include<fstream>
using namespace std;

class PolyObjectNumber {
private:
    static double* x;
    static double* y;
    int size_point;
public:
    PolyObjectNumber() { size_point = 0; }
    PolyObjectNumber(int _size) {
        size_point = _size;
        x = new double[size_point];
        y = new double[size_point];
    }
    PolyObjectNumber(const PolyObjectNumber& poly_object_number) {
       memcpy(this, &poly_object_number, sizeof(PolyObjectNumber));
    }
    double frand(double min, double max){
        double f = (double)rand() / RAND_MAX;
        return min + f * (max - min);
    }

    friend ostream& operator << (ostream& stream, const PolyObjectNumber obj)   {
        return obj.Print(stream);
    }
    friend istream& operator >> (istream& stream, PolyObjectNumber obj){
        return obj.Scan(stream);
    }

    ostream &Print(ostream& stream) const {
        stream << right;
        stream << "Всего точек в фигуре: " << size_point << ", ";
        for (int i = 0; i < size_point; i++) {
            stream << "Точка № " << i + 1 << ": ";
            stream << "(X;Y) =" << x[i] << ", " << y[i] << "\n";
        };
        return stream;
    }
    istream &Scan(istream& stream)  {
        stream >> size_point;
        x = new double[size_point];
        y = new double[size_point]; 
        for (int i = 0; i < size_point; i++) {
            stream >> x[i] >> y[i];
        }
        return stream;
    }
    
    friend PolyObjectNumber& operator ++(PolyObjectNumber& poly_object_number) {
        for (int i = 0; i < poly_object_number.size_point; i++) {
            poly_object_number.x[i]++;
            poly_object_number.y[i]++;
        }
        return poly_object_number;
    }
    PolyObjectNumber operator ++(int) {
        PolyObjectNumber poly_object_number;
        poly_object_number = *this;
        ++(*this);
        return poly_object_number;
    }

    PolyObjectNumber operator *(const double& num) {
        for (int i = 0; i < size_point; i++) {
            x[i] = x[i] * num;
            y[i] = y[i] * num;
        }
        return *this;
    }

    double perimeter() const {
        double perimeter = 0;
        for (int i = 1; i < size_point; i++) {
            perimeter = perimeter + sqrt(pow(x[i] - x[i - 1], 2) + pow(y[i] - y[i - 1], 2));
        }
        perimeter = perimeter + sqrt(pow(x[size_point] - x[0], 2) + pow(y[size_point] - y[0], 2));
        return perimeter;
    };

    void generate_value(double min, double max) {
        for (int i = 0; i < size_point; i++) {
            x[i] = frand(min, max);
            y[i] = frand(min, max);

        }
    }

    bool operator >(const PolyObjectNumber& poly_object_number) const {
        return (*this).perimeter() > poly_object_number.perimeter();
    }
    bool operator <(const PolyObjectNumber& poly_object_number) const { 
        return  (*this).perimeter() < poly_object_number.perimeter();
    }

    static void sort(PolyObjectNumber* poly_object_number, int quantity) {
        bool can_changed = true;
        while (can_changed) {
            can_changed = false;
            for (int i = 0; i < quantity - 1; i++) {
                if (poly_object_number[i] > poly_object_number[i + 1]) {
                    swap(poly_object_number[i], poly_object_number[i + 1]);
                    can_changed = true;
                }
            }
        }
    }

};

int main(void) {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
PolyObjectNumber* poly_object_random;
PolyObjectNumber* poly_object_file;
int quantity_of_objects; 
char selection; 
ifstream in;
in.open("input.txt", ios::_Nocreate);
if (!in) {
    cout << "Ошибка открытия файла input.txt\n";
    return 0;
}
in >> quantity_of_objects; 
poly_object_random = new PolyObjectNumber[quantity_of_objects];
poly_object_file = new PolyObjectNumber[quantity_of_objects];
do
{
    system("cls");
    cout << " 1. Заполнение массива из файла и случайным образом.\n";
    cout << " 2. Найти периметр полиобъекта\n";
    cout << " 3. Отсортировать массив объектов PolyObjectNumber по периметру\n";
    cout << " 4. Инкремент отсортированного массива объектов PolyObjectNumber\n";
    cout << " 5. Умножение отсортированного массива объектов PolyObjectNumber на число\n";
    cout << " 6. Выход\n";
    cin >> selection;
    cout << '\n';
    switch (selection)
    {
    case '1':
        cout << "1. Заполнение массива из файла и случайным образом.\n";
        cout << "Из файла input.txt.\n";
        for (int i = 0; i < quantity_of_objects; i++) {
            in >> poly_object_file[i];
        }
        cout << "Случайным образом\n";
        for (int i = 0; i < quantity_of_objects; i++) {
            poly_object_random[i].generate_value(-50, 50);
        }
        cin.ignore(2);
        break;
    case '2':
        cout << " 2. Нахождение периметра полиобъекта\n";
        cout << "\nСлучайные данные\n";
        for (int i = 0; i < quantity_of_objects; i++)
        {
            cout << "Периметр " << i + 1 << "поли-объектая: " << poly_object_random[i].perimeter();
        }
        cout << "\nДанные из файла\n";
        for (int i = 0; i < quantity_of_objects; i++) {
            cout << "Периметр " << i + 1 << "поли-объектая: " << poly_object_file[i].perimeter();
        }
        cin.ignore(2);
        cin.get();
        break;
    case '3':
        cout << "3. Отсортировать массив объектов PolyObjectNumber по периметру\n";
        cout << "Сортировка массива с значениями из файла :\n";
        PolyObjectNumber::sort(poly_object_file, quantity_of_objects);
        cout << "Сортировка массива со случайными значениями :\n";
        PolyObjectNumber::sort(poly_object_random, quantity_of_objects);
        cin.ignore();
        cin.get();
        break;
    case '4':
        cout << "4. Инкремент отсортированного массива объектов PolyObjectNumber\n";
        cout << "Исходные значения массива :\n";
        for (int i = 0; i < quantity_of_objects; i++){
            cout << poly_object_random[i];
    }
        cout << "Значения массива после операции инкремента:\n";
        for (int i = 0; i < quantity_of_objects; i++) {
        cout << ++poly_object_random[i];
    }
            cin.ignore();
            cin.get();
            break;
    case '5':
            cout << " 5. Умножение отсортированного массива объектов PolyObjectNumber на число\n";
            cout << "Исходные значения массива :\n";
            for (int i = 0; i < quantity_of_objects; i++) {
                cout << poly_object_random[i];
            }
            cout << "Значения массива после операции умножения на 5:\n";
            for (int i = 0; i < quantity_of_objects; i++) {
                cout << poly_object_random[i] * 5;
            }
            cin.ignore();
            cin.get();
            break;
    case '6':
        cin.ignore();
        break;
    default:
        cout << selection << " - Не корректный выбор.\n";
        cout << endl;
        cin.ignore();
        cin.get();
    }
} while (selection != '6');
in.close();
delete[]poly_object_file;
delete[]poly_object_random;
system("pause");
return 1;
}

Список ошибок


Ответы (0 шт):