【发布时间】:2010-10-29 12:46:35
【问题描述】:
想请教一下关于函数模板的建议。我有一个函数可以将一些数据添加到缓冲区中。但我还需要在缓冲区中添加有关数据类型的信息。数据类型如下枚举:
enum ParameterType
{
UINT,
FLOAT,
DOUBLE
};
我需要从这样的函数创建一个函数模板:
void SomeBuffer::append( double par )
{
appendType( DOUBLE );
memcpy( pStr + _length, &par, sizeof( double ) );
_length += sizeof( double );
appendType( DOUBLE );
}
您能否告诉我如何根据参数类型从 ParameterType 为 appendType() 传递一个值。
template<class T>
void SomeBuffer::append( T par )
{
appendType( ??? );
memcpy( pStr + _length, &par, sizeof( T ) );
_length += sizeof( T );
appendType( ??? );
}
我尝试通过一些宏来做到这一点,但没有成功。非常感谢您的任何建议。
【问题讨论】:
-
警告:如果读取缓冲区的机器与写入缓冲区的机器具有不同的字节序,则使用
memcpy()序列化东西会给您带来麻烦。
标签: c++ templates macros function-templates