C and C++


LANG.TYPE.BCV : 仮想基底クラス

要旨

該当するクラスは、仮想基底クラスから派生しています。

MISRA C++:2008 ガイドラインでは、仮想基底クラスは未定義の動作を伴い、人間の読者を混乱させる可能性があるため、その使用を非推奨とされています。

本ワーニングクラスは、Virtual Base Class not In Diamondの厳格なスーパーセットとなります。
本ワーニングクラスは、Implicit Inheritance from Stateful Virtual Baseの厳格なスーパーセットとなります。

プロパティ

クラス名 Virtual Base Class
日本語クラス名 仮想基底クラス
クラス分類 スタイル (style)
ニーモニック LANG.TYPE.BCV
カテゴリー
AUTOSARC++14 AUTOSARC++14:M10-1-1 Classes should not be derived from virtual bases.
MisraC++2008 MisraC++2008:10-1-1 Classes should not be derived from virtual bases.
MisraC++2023 MisraC++2023:13.1.1 Classes should not be inherited virtually
対応言語 C および C++ で利用可能です。
有効/無効設定 このワーニングクラスのチェックはデフォルトで無効になっており、プロジェクトには非正規の C向けAST が必要になります。有効にするにはプロジェクト設定ファイル (configuration file) に以下の WARNING_FILTER ルールと RETAIN_UNNORMALIZED_C_AST 設定を追加してください。
RETAIN_UNNORMALIZED_C_AST = Yes
WARNING_FILTER += allow class="Virtual Base Class"
注:非正規化された AST を継続して使用した場合、使用ディスク容量が増加し解析時間が長くなる可能性があります。

class Base {};

class DerivedPublicVirtual: public virtual Base {};  // 'Virtual Base Class' warning issued here

class DerivedVirtual: virtual Base {};               // 'Virtual Base Class' warning issued here

class DerivedPublic: public Base {};                                  // ok: base class is not virtual

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

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