в моей структуре модульного тестирования для некоторых сообщений (которые являются просто структурами POD) мне нужен метод для сравнения двух таких сообщений (структур) на равенство всех полей.Например, если у меня есть сообщение:
struct SExampleMessage
{
int someField;
int someField2;
char someField3[10];
};
У меня есть метод, который берет два указателя на SExampleMessage и возвращает true, если все поля равны в обеих структурах:
bool compareExampleMessage(SExampleMessage* expectedMsg,
SExampleMessage* receivedMsg);
(Указатели, конечно, могут быть недействительными * и приведены к правильному типу)
Мой вопрос: есть ли способ избежать написания этого стандартного кода, оставаясь безопасным для типов и в области C ++?Поэтому вместо:
Один универсальный метод, который просто сравнивает двоичное содержимое сообщений (получая два пустых указателя и размер структуры)
Какой-то внешний скрипт, который анализирует заголовочный файл структуры и генерирует метод сравнения
Есть ли какой-нибудь метапрограммирующий вуду, который делает подобное?Возможно, нет, потому что тогда кто-то мог бы легко реализовать отражение C ++, но это стоит попробовать :).