C++ | Как конвертировать пользовательские структуры (классы) друг в друга с помощью функций?

Всем привет. Имеется две шаблонные структуры:

Point2<T>

Vector2<T>

Обе имеют аналогичные поля T x, T y

Ввиду того, что они будут содержать разные функции, то я не хочу представлять Vector2, как Point2 (через typedef).

После моей попытки написать конвертирующие функцию, Возник вопрос, как мне сконвертировать одно в другое (и наоборот).

Моя попытка (код ниже), заранее не имеющая права на жизнь.

template <typename T>
Point2<T> Vector2<T>::ToPoint2() {
    return Point2<T>(x, y);
}

Этот код функционирует и работает, как надо. Но мне нужно описать и такой же в другой структуре, но в таком случае хеддеры, где описаны эти структуры будут включать друг друга, из-за чего будет ошибка, то есть vector2.h будет включать point2.h, а point2.h будет включать vector2.h

Хочу написать именно функции, а не обращаться к операторам типа operator Vector2() const;

Помогите пожалуйста.


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

Автор решения: vanek

Используйте forward declarations в хедерах, а в .cpp включайте полностью, тогда не будет проблем

→ Ссылка