在不同名称空间下具有相同结构的类之间的转换

时间:2015-05-26 18:53:54

标签: c++ namespaces type-conversion

假设我在命名空间A下有一个类AAA,其定义如下:

namespace AAA {
    class A
    {
        int x;
        std::vector<double> y;
        A* ptr;
    };
}

我有另一个类B具有与以下相同的结构,但它位于不同的名称空间BBB下,

namespace BBB {
    class B
    {
        int x;
        std::vector<double> y;
        B* ptr;
    };
}

我知道这样做的正确方法是首先只有一个定义,但现在让我们假设我们无法改变有AAA::A类和BBB::B课程。有没有办法将A对象转换为B对象?

1 个答案:

答案 0 :(得分:3)

无论如何都没有安全的转换。最好的是static_assert(sizeof(A)== sizeof(B),“Different Size”),然后是勇敢的reinterpret_cast。