提问人:cvomake 提问时间:3/2/2023 最后编辑:cvomake 更新时间:3/2/2023 访问量:72
是否可以在 C++ 中使用模板将功能链接到类成员名称?
Can templates be used in C++ to link functionality to a class member name?
问:
这个问题反复出现,多年来一直困扰着我。这可能是一件众所周知的事情,但不知何故,我还没有到那本书来回答它。
我有一个创建消息的应用程序。消息包含具有值或为 null 的字段,这些字段由 setField1()/setNullField1() 等方法设置。
我想编写代码,以通用方式对消息中的此类字段进行编码,例如使用模板而不是宏。 代码是通用的,因为算法是相同的,但应该为字段调用的方法取决于该字段名称,例如 setField1/setNullField1。
在我看来,在 C++ 中应该可以在字段名称和必须调用的方法(方法名称中包含字段名称)之间建立这种关系,而无需使用宏。
您能分享一些关于如何做到这一点的想法吗? 我可能对模板与宏的限制有不正确的理解,所以如果是这种情况,请纠正我
更新由于要求代码来描述一个问题,这里有一些代码 https://onlinegdb.com/cu-Gpsahz 但请注意,这正是我的问题,我无法编写此代码,也不确定这是否是正确的策略(例如使用unordered_map)
答: 暂无答案
评论
struct Message { std::optional<int> Field1; };