クラス宣言内の メンバ変数宣言 メンバ関数宣言 のそれぞれにアクセス指定子privateもしくはpublicを設定することができます。  その2

#include <iostream>


using namespace std;


class Cube {


private:

int no; //変数noはクラスCubeのメンバ変数とよばれます

private:

float tate; //変数tateはクラスCubeのメンバ変数とよばれます

private:

float yoko; //変数yokoはクラスCubeのメンバ変数とよばれます

private:

float takasa; //変数takasaはクラスCubeのメンバ変数とよばれます

private:

void display(); //自作関数displayはクラスCubeのメンバ関数とよばれます


};


void Cube::display() {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}


//👆クラスCubeのメンバ関数となっている自作関数display()の定義をおこなっています


int main() {


Cube cube1;


//👆cube1のクラスCube型のオブジェクト宣言をおこなっています


cube1.no = 1;

cube1.tate = 2.0;

cube1.yoko = 3.0;

cube1.takasa = 4.0;


cube1.display();


return 0;

}



ビルド実行結果


エラー (アクティブ) E0265 関数 "Cube::display" (宣言された 行 20) にアクセスできません

エラー (アクティブ) E0265 メンバー "Cube::yoko" (宣言された 行 12) にアクセスできません

エラー (アクティブ) E0265 メンバー "Cube::tate" (宣言された 行 10) にアクセスできません

エラー (アクティブ) E0265 メンバー "Cube::takasa" (宣言された 行 14) にアクセスできません

エラー (アクティブ) E0265 メンバー "Cube::no" (宣言された 行 8) にアクセスできません

エラー C2248 'Cube::yoko': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません

エラー C2248 'Cube::tate': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。

エラー C2248 'Cube::takasa': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。

エラー C2248 'Cube::no': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。

エラー C2248 'Cube::display': private メンバー (クラス 'Cube' で宣言されている) にアクセスできません。


ソーラー「はい、みなさ~ん


Cubeのクラス宣言内の


メンバ変数宣言

メンバ関数宣言


のそれぞれにアクセス指定子privateを設定したので


cube1のクラスCube型のオブジェクト宣言


Cube cube1;


を実行して


オブジェクトcube1のメンバ変数


cube1.no

cube1.tate

cube1.yoko

cube1.takasa


オブジェクトcube1のメンバ関数


cube1.display()


を作製しても


オブジェクトcube1のメンバ変数


cube1.no

cube1.tate

cube1.yoko

cube1.takasa


オブジェクトcube1のメンバ関数


cube1.display()



使用することはできないので


cube1.no = 1;

cube1.tate = 2.0;

cube1.yoko = 3.0;

cube1.takasa = 4.0;


cube1.display();


を実行しようとしても


ビルドエラーが表示されます。」


マックス「おお やったな ソーラー」


ソーラー「めでたし めでたし😊」


マックス「おい ソーラー😊」


ソーラー「なんでしょう😊」


マックス「このままじゃ どうしようもないじゃないか~い」


ソーラー「やっぱりそうですよね」


マックス「どつぼに はまってるだけじゃないか


どこまで はまりつづけるんだ」


ソーラー「じゃあ


Cubeのクラス宣言内の


メンバ変数宣言

メンバ関数宣言


に設定された


アクセス指定子を


すべて


privateから


public


に変更してプログラムを実行してみます。


そのプログラムはこちらです

👇


#include <iostream>


using namespace std;


class Cube {


public:

int no; //変数noはクラスCubeのメンバ変数とよばれます

public:

float tate; //変数tateはクラスCubeのメンバ変数とよばれます

public:

float yoko; //変数yokoはクラスCubeのメンバ変数とよばれます

public:

float takasa; //変数takasaはクラスCubeのメンバ変数とよばれます

public:

void display(); //自作関数displayはクラスCubeのメンバ関数とよばれます


};


void Cube::display() {


cout << "立方体につけられたナンバーは" << no << "です" << "\n";

cout << "立方体の縦の長さは" << tate << "です" << "\n";

cout << "立方体の横の長さは" << yoko << "です" << "\n";

cout << "立方体の高さの長さは" << takasa << "です" << "\n";


}


//👆クラスCubeのメンバ関数となっている自作関数display()の定義をおこなっています


int main() {


Cube cube1;


//👆cube1のクラスCube型のオブジェクト宣言をおこなっています


cube1.no = 1;

cube1.tate = 2.0;

cube1.yoko = 3.0;

cube1.takasa = 4.0;


cube1.display();


return 0;

}


プログラムの実行結果


立方体につけられたナンバーは1です

立方体の縦の長さは2です

立方体の横の長さは3です

立方体の高さの長さは4です


マックス「ふうぅ・・・ちゃんと


正常にビルド実行することができたか・・


アクセス指定子をprivateからpublicに変更することにより


cube1のオブジェクト宣言


Cube cube1;


により生成される


オブジェクトcube1のメンバ変数


cube1.no

cube1.tate

cube1.yoko

cube1.takasa


オブジェクトcube1のメンバ関数


cube1.display()


を使用することができるようになったわけだ」


てんC「ところで


今までは


Cubeのクラス宣言内の


メンバ変数宣言


int no;

float tate;

float yoko;

float takasa;


メンバ関数宣言


void display();


に設定されたアクセス指定子は全て


private



public



どちらかでしたが


Cubeのクラス宣言内の


メンバ変数宣言


int no;

にはアクセス指定子private

float tate;

にはアクセス指定子public

float yoko;

にはアクセス指定子private

float takasa;

にはアクセス指定子public


メンバ関数宣言


void display();


には


アクセス指定子public


というように


バラバラにアクセス指定子を設定することは可能なのですか?」


ソーラー「もちろん 可能です」


マックス「なんか・・・


かなり複雑なことになりそうだな・・・」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る