C and C++


LANG.TYPE.MI.PBC : Multiple Inheritance with Public Base Class

要旨

A class inherits from multiple base classes, and publicly inherits at least one class that is not an interface.

A class C is considered an interface class if either of the following is true.

See also:

プロパティ

クラス名 Multiple Inheritance with Public Base Class
日本語クラス名 Multiple Inheritance with Public Base Class
クラス分類 スタイル (style)
ニーモニック LANG.TYPE.MI.PBC
カテゴリー
CWE CWE:1055 Multiple Inheritance from Concrete Classes
JSF++ JSF++:88 Multiple inheritance shall only be allowed in the following restricted form: n interfaces plus m private implementations, plus at most one protected implementation.
対応言語 C++ のみ利用可能です。 C は利用できません。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Multiple Inheritance with Public Base Class"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

class base0 {};

class base1 {};

class derA : public base0, public base1 {}; // 'Multiple Inheritance with Public Base Class'
                                            // warning issued here

class derB: public base0 {};                                   // not multiple inheritance

class derC: private base0, private base1 {};                   // not public

関連のある設定ファイルパラメータ

設定ファイルの以下のパラメータがこのワーニングクラスのチェックに影響します。