メインコンテンツ

AUTOSAR C++14 Rule M11-0-1

Member data in non-POD class types shall be private

説明

ルール定義

非 POD クラス型のメンバー データはプライベートであるものとします。

根拠

一般にアクセスできるデータ メンバーがクラスに含まれる場合、他のクラスと関数が、そのクラスのデータ メンバーと直接相互作用する可能性があります。クラスに変更が加えられた場合は、そのクラスを使用するクライアントの更新が必要になることがあります。クラスが 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 はこれらのデータ メンバーにフラグを設定します。

チェック情報

グループ: メンバー アクセス制御
カテゴリ: Required、Automated

バージョン履歴

R2019a で導入

すべて展開する