你真的无法避免做丑陋的演员,但至少你可以把他们隐藏在
idontknowwhat_t
班级的
operator>>
operator<<
class idontknowwhat_t
{
uint8_t* _data;
public:
idontknowwhat_t(uint8_t* buffer)
: _data(buffer)
{}
template<typename insert_type>
idontknowwhat_t& operator<<(insert_type value)
{
*reinterpret_cast<insert_type*>(_data) = value;
_data += sizeof(insert_type);
return *this;
}
template<typename extract_type>
idontknowwhat_t& operator>>(extract_type& value)
{
value = *reinterpret_cast<extract_type*>(_data);
_data += sizeof(extract_type);
return *this;
}
};
我认为这实际上会直接与您的代码一起工作。在本例中
我不知道什么
类不拥有缓冲区,只保留一个原始指针,指向它希望读取或写入的下一位数据。出于实际目的,我建议让
我不知道什么
班级的责任。有一个
boost library