Я уверен, что этот вопрос задавался ранее, но я не могу его найти.
У меня есть два класса, Vector
и Point
.
Файлы как таковые (немного повторяющиеся):
vector.h
:
#include <math.h>
#include <stdlib.h>
class Vector {
friend class Point;
public:
...
Vector(Point); // Line 16
vector.cpp
:
#include <math.h>
#include <stdlib.h>
#include "vector.h"
...
Vector::Vector(Point point) { // Line 29
x = point.x;
y = point.y;
z = point.z;
}
point.cpp
и point.h
выглядят в основном одинаково, за исключением того, что вы поменяете vector
с point
в определениях.
Я включаю их так:
#include "structures/vector.cpp"
#include "structures/point.cpp"
Когда яскомпилировать, я получаю эту ошибку:
structures/vector.h:16:17: error: field ‘Point’ has incomplete type
structures/vector.cpp:29:15: error: expected constructor, destructor, or type conversion before ‘(’ token
Я думаю, что эта ошибка говорит о том, что Point
еще не было объявлено, но когда я объявляю его внутри vector.h
путем импорта point.cpp
, яполучите огромную кучу ошибок.
Может ли кто-нибудь пролить свет на эту проблему?
Спасибо!
После применения @ ildjarn'sпредположения, эти ошибки исчезли, и у меня остался один:
structures/vector.h:16:18: error: expected ‘)’ before ‘const’
И строка:
Vector(Point const);
Я определяю это так в файле .cpp
:
Vector::Vector(Point const &point) {