2016-03-27 10 views
2

Plug & Paint Exampleを勉強している間は、私は慣例によりQ_DECLARE_INTERFACE()およびQ_PLUGIN_METADATA()、インターフェイスID文字列は一致する必要がありますか?

を読んで、私たちは インターフェイスを識別するために、「Javaパッケージ名」の構文を使用します。後でインターフェイスを変更する場合は、別の 文字列を使用して新しいインターフェイスを識別する必要があります。それ以外の場合は、アプリケーションがクラッシュする可能性があります( )。

「どうすればアプリケーションがクラッシュする可能性がありますか」ステートメント?

Q_DECLARE_INTERFACE()Q_PLUGIN_METADATA()の両方の識別文字列が異なる場合、アプリケーションがクラッシュすることを期待する必要がありますか?

答えて

1

私はそうかもしれないと思うかもしれません - (変更されれば)新しいインプリメンテーションが古いインプリメンテーションと「バイナリ」互換性がある限り、クラッシュしません。したがって、プラグインクラスを新しい機能で拡張し、古いコードリレーが同じインタフェースIDでリレーすると、新しい実装へのポインタが取得され、古い宣言(古いコードにコンパイルされる可能性があります)にキャストされます。

だから、例に働くかもしれないが、あなたがメインのコードと一貫性のあるプラグインあなたを保つことを確認しているので、IIDでのバージョン変更につながるはずしかし、私はプラグインインターフェイスに変更はQtに同意するだろうhttps://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B

を挙げます。

関連する問題