クラス宣言は クラスのメンバ関数の定義より先に実行されている必要があります
#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
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のメンバ関数とよばれます
};
を実行しないとだめかい」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます