メインコンテンツ

MISRA C++:2008 Rule 11-0-1

Member data in non- POD class types shall be private.

説明

ルール定義

Member data in non- POD class types shall be private. 1

根拠

一般にアクセスできるデータ メンバーがクラスに含まれる場合、他のクラスと関数が、そのクラスのデータ メンバーと直接相互作用する可能性があります。クラスに変更が加えられた場合は、そのクラスを使用するクライアントの更新が必要になることがあります。クラスが POD (Plain Old Data) 型でない場合、そのクラスのデータ メンバーへのアクセスを制限することで、クラスのカプセル化が可能になります。このようにカプセル化されたクラスでは、クラスの実装の詳細が、クラスを使用するクライアントに対して不透明になります。クラスはその実装の制御を保持します。また、クラスを使用するクライアントに影響を与えることなく、クラスを個別に維持できます。

Polyspace 実装

Polyspace® は、POD 型ではないクラスに含まれる非プライベートのデータ メンバーにフラグを設定します。Polyspace は標準と同じ POD クラスの定義を使用します。

トラブルシューティング

ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

すべて展開する

class nonPOD{
	nonPOD(){
		//...
	}
	~nonPOD(){
		//...
	}
	public:
	int getX();
	int setX(int&);
	int getY();
	int setY(int&);
	int getZ();
	int setZ(int&);
	int x; //Noncompliant
	protected:
	int y; //Noncompliant
	private:
	int z;
};

この例では、データ メンバー y および zprivate ではありません。Polyspace はこれらのデータ メンバーにフラグを設定します。

チェック情報

グループ: Member Access Control
カテゴリ: 必要

バージョン履歴

R2013b で導入

すべて展開する


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.