Q_DECLARE_INTERFACE()和Q_PLUGIN_METADATA(),接口id字符串需要匹配



在学习Plug&油漆示例,我阅读

按照惯例,我们使用"Java包名称"语法来识别接口。如果我们以后更改接口,我们必须使用不同的字符串,用于标识新接口;否则,应用程序可能崩溃

我应该如何接受"…否则,应用程序可能会崩溃"语句?

如果Q_DECLARE_INTERFACE()和Q_PLUGIN_METADATA()的标识字符串不同,这是否意味着我应该期望应用程序崩溃?

我认为这可能意味着——只要(如果更改)新实现与旧实现"二进制"兼容,它就不会崩溃。因此,如果你用新功能扩展插件类,并且你的旧代码中继在同一个接口ID上,它将获得一个指向新实现的指针,该指针将被转换为旧声明(可能会编译为旧代码)。

所以它可能适用于上面提到的情况https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B

然而,我同意Qt的观点,即插件接口的变化应该会导致IID的版本变化,所以你一定要保持主代码和插件的一致性。

相关内容

  • 没有找到相关文章

最新更新