6
如何在C ++中比较泛型结构?
我想以一种通用的方式比较结构,并且我做了这样的事情(我无法共享实际的源代码,因此如有必要,请提供更多详细信息): template<typename Data> bool structCmp(Data data1, Data data2) { void* dataStart1 = (std::uint8_t*)&data1; void* dataStart2 = (std::uint8_t*)&data2; return memcmp(dataStart1, dataStart2, sizeof(Data)) == 0; } 这通常可以按预期工作,但有时即使两个结构实例具有相同的成员(我已经使用eclipse调试器进行了检查),它有时仍返回false。经过一些搜索,我发现memcmp由于填充了所使用的结构而导致失败。 有没有比较合适的内存填充方式?我无法修改所使用的结构(它们是我正在使用的API的一部分),并且所使用的许多不同结构具有一些不同的成员,因此无法以一般方式进行单独比较(据我所知)。 编辑:不幸的是,我坚持使用C ++ 11。应该早些提到...