根据KDE-Techbase,不允许更改类成员类型。 但是改变指针的类型是二进制兼容的,不是吗? 例如,在" MyClass.DLL":
中class A
{
int * m;
};
我将其更改为:
class A
{
B * m;
};
这是有效还是会破坏DLL之间的兼容性? 我是这么认为的,因为指针总是以32/64位存储。
答案 0 :(得分:0)
标准没有这样的保证,但如果你假设一个特定的平台(例如Windows)你对这个实现有更多的了解:事实上,所有指针(非指针指向成员)都是结构布局的大小和对齐方式相同。
您可以通过查看对象的大小和offsetof
各种数据成员来验证特定情况。将旧定义保留为新名称,并添加static_assert
(如果您有较旧的编译器,则添加Boost')验证假设。这样,由于调试版本中的自动错误检查或您不了解的问题,您不会被任何有趣的业务所困扰。