【发布时间】:2010-09-01 13:28:35
【问题描述】:
在我的单元测试框架中,对于一些消息(它们只是 POD 结构),我需要一种方法来比较两个这样的消息(结构)以确保所有字段的相等性。例如,如果我有一条消息:
struct SExampleMessage
{
int someField;
int someField2;
char someField3[10];
};
我有一个方法,它接受两个指向 SExampleMessage 的指针,如果两个结构中的所有字段都相等,则返回 true:
bool compareExampleMessage(SExampleMessage* expectedMsg,
SExampleMessage* receivedMsg);
(指针当然可以是 void* 并转换为正确的类型)
我的问题是 - 有什么方法可以避免编写此样板代码,同时保持类型安全并在 C++ 领域中?所以而不是:
一种简单地比较消息的二进制内容的通用方法(获取两个 void 指针和结构的大小)
一些外部脚本,分析结构的头文件并生成比较方法
是否有任何类似的元编程巫术?可能没有,因为那时有人会很容易地用它实现 C++ 反射,但值得一试:)。
【问题讨论】:
标签: c++ metaprogramming