在不同的类中定义的相同的简单结构定义,可能是用相同的编译器和标志编译的不同程序文件,在内存中是否相同?常识说它们应该是,但常识和语言标准并不总是完全匹配......
代码相同,assertAB
下面的方法是否定义良好,它是否总是通过所有断言(假设双精度值是一个数字)?
class Aclass {
public:
struct Astruct {
int i1;
char s1[10];
double d1;
}
}
class Bclass {
private:
struct Bstruct {
int i2;
const char s2[10];
double d2;
};
public:
void assertAB(Aclass::Astruct s1) {
Bstruct s2;
std::memcpy(&s2, &s1, sizeof s2);
assert(s1.i1 == s2.i2);
assert(std::strncmp(s1.s1, s2.s2, sizeof (s2.s2)) == 0);
assert(s1.d1 == s2.d2);
}
}