在学习Plug&油漆示例,我阅读
按照惯例,我们使用"Java包名称"语法来识别接口。如果我们以后更改接口,我们必须使用不同的字符串,用于标识新接口;否则,应用程序可能崩溃
我应该如何接受"…否则,应用程序可能会崩溃"语句?
如果Q_DECLARE_INTERFACE()和Q_PLUGIN_METADATA()的标识字符串不同,这是否意味着我应该期望应用程序崩溃?
我认为这可能意味着——只要(如果更改)新实现与旧实现"二进制"兼容,它就不会崩溃。因此,如果你用新功能扩展插件类,并且你的旧代码中继在同一个接口ID上,它将获得一个指向新实现的指针,该指针将被转换为旧声明(可能会编译为旧代码)。
所以它可能适用于上面提到的情况https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B
然而,我同意Qt的观点,即插件接口的变化应该会导致IID的版本变化,所以你一定要保持主代码和插件的一致性。