小编Axe*_*xel的帖子

我可以使用模板提取结构体或公共类成员吗?

基本上,我有很多不同类型的结构,如下所示:

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)

感谢您的帮助!

c++ templates struct

3
推荐指数
1
解决办法
1128
查看次数

标签 统计

c++ ×1

struct ×1

templates ×1