C ++如何将任何类(自定义)对象转换为vector <unsigned char =“”>

时间:2017-11-27 07:47:09

标签: c++ serialization variadic-templates

我已经定义了自己的类:

class Rectangle {
  int width;
  int height;
};

我想将任何此类对象转换为vector<unsigned char>。我试过针对特定类型,然后针对任何类型:

template< typename T > std::vector< byte, sizeof(T) >  to_bytes( const T& object ) {
    std::vector< byte, sizeof(T) > bytes ;
    const byte* begin = reinterpret_cast< const byte* >(std::addressof(object)) ;
    const byte* end = begin + sizeof(T) ;
    std::copy( begin, end, std::begin(bytes) ) ;
    return bytes ;
}

但这仅适用于C ++中的特定type。如何将Rectangle类或任何用户定义的类转换为vector<unsigned char>

1 个答案:

答案 0 :(得分:0)

您可以通过在Rectangle类中进行用户定义的类型转换来完成此操作:

explicit operator vector<unsigned char>() const {
// Do something here
}

希望这会有所帮助。