首页 > 解决方案 > 是否可以将 C++ 结构的字段转换为包参数?

问题描述

我有一个如下结构:

struct A1
{
   int a;
   int b;

   char c[10];
};

或者

struct A2
{
   double t;    
   char* p;
};

现在我想访问所有文件,我的领导建议我使用pack参数来简单地处理这个问题,就像这样:

template<typename... T>
void handler(T...args)
{
   // handle all struct fileds, such a, b, c here
}

// 怎么调用?

A1 a1;    
handle(a1);

A2 a2;    
handle(a2);

可悲的是,我不知道如何一一访问所有字段?

请注意,模板函数应该是通用的,因为我们不知道结构是如何定义的?

可能吗?如果是的话,你能告诉我你的想法吗?非常感谢。

标签: c++templatesstructtypelist

解决方案


我相信答案是否定的。

一篇论文提出了一种方法(通过结构化绑定),但至少要到11 月才会考虑。


推荐阅读