クラス宣言は クラスのメンバ関数の定義より先に実行されている必要があります

#include <iostream>


using namespace std;


class Cube {


public:

int no;


public:

void display();


/*🌞

メンバ関数宣言void display();を

メンバ変数宣言

int no;

float tate;

float yoko;

float takasa;

のなかに

混ぜ込んでみました

🌞*/



public:

float tate;


public:

float yoko;


public:

float takasa; //


};


void Cube::display() {


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

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

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

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


}


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


int main() {


Cube cube1;


cube1.no = 1;

cube1.tate = 2.0;

cube1.yoko = 3.0;

cube1.takasa = 4.0;


cube1.display();


return 0;

}



ソーラー「るんるん


それでは ビルドっ(´▽`*)/」




プログラムの実行結果


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

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

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

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


マックス「くくく


Cubeのクラス宣言内の


メンバ変数宣言


int no;

float tate;

float yoko;

float takasa;


とメンバ関数宣言


void display();



どちらが先に記述してあっても


プログラムの実行は正常にできるのか


自由度が高いじゃないか


くくく・・・


なら

次のようなプログラムがあるとするだろう?

👇

#include <iostream>


using namespace std;


class Cube {


public:


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

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

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

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


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


};


void Cube::display() {


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

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

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

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


}


int main() {


Cube cube1;


cube1.no = 1;

cube1.tate = 2.0;

cube1.yoko = 3.0;

cube1.takasa = 4.0;


cube1.display();


return 0;

}


プログラムの実行結果


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

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

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

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



このプログラム内の


Cubeのクラス宣言

👇

class Cube {


public:


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

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

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

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


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


};



クラスcubeのメンバ関数display()の定義


void Cube::display() {


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

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

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

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


}


の記述する順序を


いれかえて記述した


次のプログラムは実行できるかな( ̄ー ̄)ニヤリ



#include <iostream>


using namespace std;


void Cube::display() {


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

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

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

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


}


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



class Cube {


public:

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

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

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

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

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


};

//👆Cubeのクラス宣言です


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;

}



てんC「こ、これは・・


ちょっと・・・」


ソーラー「うっわ~


さすがに


Cubeのクラス宣言


class Cube {


public:

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

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

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

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

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


};



の前に


クラスcubeのメンバ関数display()の定義


void Cube::display() {


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

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

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

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


}


を記述するのは無理じゃないかな」


マックス「なぜ そうおもうにゃ~~~ん」


ぶーにゃん「にゃ~~~ん」


ソーラー「なぜなら・・・


それはですね


クラスcubeのメンバ関数display()の定義


void Cube::display() {


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

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

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

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


}



Cubeのクラス宣言より先に


記述した場合


このクラスcubeのメンバ関数display()の定義内で


使用されている


変数

no

tate

yoko

takasa



定義されていないことになるから


つまり


no

tate

yoko

takasa


は変数宣言されていないから


ビルドエラーが表示されるんじゃないかな


と思うわけです


クラスcubeのメンバ関数display()の定義


void Cube::display() {


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

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

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

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


}


の前に


Cubeのクラス宣言


class Cube {


public:

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

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

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

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

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


};


が実行されていれば


int no;

float tate;

float yoko;

float takasa;


が実行されているので


クラスcubeのメンバ関数display()の定義

👇

void Cube::display() {


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

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

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

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


}

👆

内で

変数

no

tate

yoko

takasa

が使えるようになるんじゃないかな。



            そもそも


Cubeのクラス宣言を実行していないのに


クラスcubeのメンバ関数display()の定義

👇

void Cube💖ここ💖::display() {


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

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

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

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


}

👆


もろに


void Cube::display()


のように


クラスCubeを使用するのは無理があると


思うな。仮説ですが😊」



マックス「おお


いい仮説じゃないか?


感心したぞい・・・


そうだろうな~


やっぱり」


ソーラー「ただ


Cube のクラス宣言内の


メンバ変数宣言

int no;

float tate;

float yoko;

float takasa;


メンバ関数宣言

void display();



どちらが先に記述してあっても


プログラムの実行は正常にできる


つまり


メンバ変数宣言


int no;

float tate;

float yoko;

float takasa;


の前に


変数

no

tate

yoko

takasa


を使用しているメンバ変数宣言


void display();


が記述できることから



Cubeのクラス宣言


の前に


クラスcubeのメンバ関数display()の定義

👇

void Cube::display() {


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

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

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

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


}

が記述されているのも


もしかしたら可能なんじゃないかな


とも思うな」


マックス「かんがえたな🌞


ではな


Cubeのクラス宣言


の前に


クラスcubeのメンバ関数display()の定義

👇

void Cube::display() {


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

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

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

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


}


を記述した


プログラムが正常に実行できるか試してみるか」


てんC「ほんとうに どのような結果が表示されるのか


楽しみですね。」



☆  ☆  ☆  ☆

  ☆  ☆

うちも楽しみだにゃん


            solarplexussより


☆  ☆  ☆  ☆

  ☆  ☆


マックス「では


このプログラムを

👇

#include <iostream>


using namespace std;


void Cube::display() {


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

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

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

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


}


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



class Cube {


public:

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

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

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

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

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


};



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;

}


ソーラー「わ~


ど~なるかな~」


てんC「どきどき」


マックス「ビルドっ」




ビルド実行結果



エラー C2065 'yoko': 定義されていない識別子です。

エラー C2065 'tate': 定義されていない識別子です。

エラー C2065 'takasa': 定義されていない識別子です。

エラー C2065 'no': 定義されていない識別子です。

エラー C2653 'Cube': 識別子がクラス名でも名前空間名でもありません。

エラー (アクティブ) E0065 ';' が必要です


ソーラー「


エラー C2065 'yoko': 定義されていない識別子です。

エラー C2065 'tate': 定義されていない識別子です。

エラー C2065 'takasa': 定義されていない識別子です。

エラー C2065 'no': 定義されていない識別子です。



でてきたね。」



マックス「やっぱり


void Cube::display() {


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

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

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

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


}


の前に


Cubeのクラス宣言


class Cube {


public:

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

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

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

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

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


};



を実行しないとだめかい」




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

作者を応援しよう!

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

応援したユーザー

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

新規登録で充実の読書を

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

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

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