Объявление структуры в другом файле

У меня возникло затруднение с реализацией кода со структурой в двух файлах. Есть главный файл (main.cpp), в котором, по требованию пользователя, вызывается в ходе вычислений функция, связанная с обработкой введенных через консоль целочисленных значений в структуру координат точек с дальнейшими вычислениями.

Функция вычисления важного параметра - double length(Point *p1, Point *p2) находится в файле geometry.cpp, равно как структура point. В файле одноименном.h - подключенном, объявлен прототип length функции. Структура однако не объявлена по факту. Что и вызывает ошибки вида. Я пытался переобъявить структуру в полном виде - ничего не изменилось. Какую ошибку я допускаю? Читал про тайпдеф, но у меня снова С++/С помешательство. Помогите пожалуйста

   error C2065: Point: необъявленный идентификатор
         error C2065: p1: необъявленный идентификатор
         error C2065: p2: необъявленный идентификатор
         error C2078: слишком много инициализаторов

Собственно сам файл:

/---------geometry.cpp
    #include <cmath>
    #define _CRT_SECURE_NO_WARNINGS
    #include <iostream>
    #include <conio.h>


    struct Point
    {
       double x;
       double y;
       double z;
    };

    double length(Point *p1, Point *p2)
    {
       double x = p2->x - p1->x;
       double y = p2->y - p1->y;
       double z = p2->z - p1->z;

       return sqrt(x*x+y*y+z*z);
    }



 //----geometry.h - прототип
    double length(Point  *p1, Point *p2);

//----------------- в main.cpp подключаю заголовочный
#include "geometry.h"

Основная часть программы::

    ///--в главной функции main собственно необходимый участок кода -
             //............
                        switch(deystvie3)
                            {   case 1:


                        {    
                            //printf("-------Введите данные с консоли-------");
        Point *p = new Point[n];

        double *s = new double[n];

       cout << "Enter coordinates int format 'x y z'\n";
       for (int i=0; i<n; i++)
      cin >> p[i].x >> p[i].y >> p[i].z;

       for (int i=0; i<n; i++)
       {
          double sum=0;
          for (int j=0; j<n; j++)
          {
             if (i!=j)
             {
                sum += length(p+i, p+j); //вызов функции length(Point *p1, Point *p2)
             }
          }
          s[i] = sum;
       }

       int min=0;
       for (int i=0; i<n; i++)
          if (s[min] > s[i]) min = i;

       cout << "\nThis point is (" << p[min].x << ", " << p[min].y << ", " << p[min].z << ")" << endl;

       delete[] s;
       delete[] p;


                                    // вызываемый прототип функции ввода и обработки данных с консоли
                                    break;

                        }
//......и т.д. (свитч написан правильно)

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