このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
MISRA C++:2023 Rule 6.4.3
A name that is present in a dependent base shall not be resolved by unqualified lookup
R2024b 以降
説明
ルール定義
A name that is present in a dependent base shall not be resolved by unqualified lookup. 1
根拠
あるクラス テンプレートが別のクラス テンプレートから派生する場合、基底テンプレートと現在のスコープまたは名前空間の両方に存在する名前を使用することで、混乱が生じる可能性があります。基底クラス テンプレートとそれらのクラスが含まれる名前空間の両方に同じ名前が存在する場合、これらの名前のスコープ解決はコンパイラに依存するため、開発者の想定に反した結果になる可能性があります。このような名前の競合が発生した場合の混乱を避けるためには、完全修飾 ID または this->
を使用して明示的に意図するオブジェクトを示して曖昧さをなくします。
Polyspace 実装
Polyspace® は、次の条件がすべて当てはまる名前に対し、フラグを設定します。
名前が基底クラスに存在する。
名前が基底クラスを含む名前空間に存在する。
修飾子付き ID または
this->
を持たない名前が使用されている。
トラブルシューティング
ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。
例
チェック情報
グループ: Basic Concepts |
カテゴリ: Required |
バージョン履歴
R2024b で導入
1 All MISRA coding rules and directives are © Copyright The MISRA Consortium Limited 2021.
The MISRA coding standards referenced in the Polyspace Bug Finder™ documentation are from the following MISRA standards:
MISRA C:2004
MISRA C:2012
MISRA C:2023
MISRA C++:2008
MISRA C++:2023
MISRA and MISRA C are registered trademarks of The MISRA Consortium Limited 2021.