基本上,我有很多不同类型的结构,如下所示:
typedef struct
{
char memberA;
int memberB;
...
} tStructA;
Run Code Online (Sandbox Code Playgroud)
是否可以使用模板从结构中获取/提取任意成员?在伪代码中,我正在寻找这样的东西:
/*This is pseudocode!*/
template <typename STRUCT_TYPE, typename MEMBER_TYPE, membername NAME>
class cMemberExtractor
{
public:
MEMBER_TYPE
extract(const STRUCT_TYPE* pStruct) const
{
return pStruct->NAME;
}
};
Run Code Online (Sandbox Code Playgroud)
背后的想法是使用这样的模板:
/*somewhere*/
void
producer()
{
//produce update
tStructA* pUpdate=new tStructA;
...
//send update to receivers
emit(pUpdate);
}
/*elsewhere*/
void
consumer(const tStructA* pUpdate)
{
//extract data
int data=cMemberExtractor<tStructA,int,memberB>().extract(pUpdate);
//process data
...
}
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!