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 шт):
Используйте forward declarations в хедерах, а в .cpp включайте полностью, тогда не будет проблем