Объявление структуры в другом файле
У меня возникло затруднение с реализацией кода со структурой в двух файлах. Есть главный файл (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;
}
//......и т.д. (свитч написан правильно)