У меня есть два класса, я не могу изменить, оба имеют одни и те же элементы:Non-преобразующий, различные типы же члены
class Pose1 {
public:
double x,y;
};
class Pose2 {
public:
double x,y;
};
Одна часть кода использует Pose1 другой использует Pose2. Есть ли способ трансформировать их друг в друга? Теперь я должен писать все время
Pose1 p1(0.5, 0.5);
Pose2 p2(p1.x,p2.y);
Я знаю, что могу написать функцию преобразования, которая только что делает это один раз. Но у меня много разных типов с большим количеством аргументов.
Есть ли способ, что я могу сделать что-то вроде:
Pose2 p2 = static_cast<Pose2>(p1);
Я не могу использовать функцию-член, потому что я не могу изменить этот код.
Спасибо!
Я полагаю 'Pose2 p2 = * reinterpret_cast (&p1);' должны, по крайней мере, как правило, работают –
@JerryCoffin I». m любопытно, будет ли это работать, разве это не нарушает правила [type aliasing] (http://en.cppreference.com/w/cpp/language/reinterpret_cast)? – BlackDwarf
, представляя этот реинтерпрет, означает, что автор Классы Pose1 и Pose2 никогда не смогут безопасно поддерживать свой код еще раз, если он вводит тонкий баг в код потребителя. –