c++の課題で
クラスのオブジェクト(インスタンス)を複数個作成し、結果を表示すること。
クラスの定義は、ヘッダファイルに記述すること(勿論、クラスの実現部は別ファイルにする)。
の2つの問題文の意味についてなのですが、
クラスのインスタンスを複数という意味と
クラスの定義は、ヘッダファイルにという点がよくわかりません。
クラスの定義はヘッダファイルとは自分でクラスの定義を書いたファイルを作り別ファイルでインクルードするということで良いのでしょうか?
No.5
- 回答日時:
>このようになったのですが違っていたら教えていただきたいです
合っていると思いますよ
あとはメンバ関数の実装部を作ればOKですね
添削するとすれば
void SetName(const char *n);//名前をセット//
void Setheight(double height); //身長をセット//
void Setweight(double weight);//体重をセット//
この三つの関数は回りくどいですね
1つの関数にして、引数を三つにしたほうがいいです、それに
問題にはコンストラクタとデストラクタを使えと書いているので
コンストラクタでこれを行うといいでしょう
つまり
class Bmi {
Bmi(const char *n, double height, double weight);
というものを作成するわけです
さらに、無記名に対応しろ(デフォルト引数)と書いてあるので
Bmi(const char *n = "no name", double height, double weight);
と、こんな感じでしょうかね
何から何までありがとうございます。。
問題にはクラスの定義は、ヘッダファイルに記述すること(勿論、クラスの実現部は別ファイルにする)。
とあるのでクラスを記述したファイルをヘッダファイルにして
実装部を記述するファイルにインクルードすれば良いのでしょうか?
質問ばかりになってしまい申し訳ありません。
No.4
- 回答日時:
>自分がいかんせん初学者なものでクラスとインスタンスがごちゃまぜになり
そうですねー
人によってどう説明したらいいかが変わりますし
私自身説明は苦手なので上手く伝えられるかは分かりませんが
細かい部分は違います
ざっくりとしたイメージとしては
int型ってありますよね
これってintというクラスです
int a;
とやるとintというクラスを使ってaというインスタンスを生成しているんです
int a = 0;などで初期化すると思いますが
実はこういう風に書けます
int a(0);
これだと分かりやすいと思うのですが
aというインスタンスを生成する際に
0という値をコンストラクタに渡すことで
0という値で初期化しているということです
これらの動作がintというクラスで定義されています
複数のインスタンスを生成するということは
int a;
int b;
int c;
これで三人分のインスタンスが作れました
というようなことですね
ご説明ありがとうございます。。
クラスを自分の解釈で記述したところ
#include <iostream>
using namespace std ;
class Bmi {
char name[20];/*名前*/
double height; /*身長*/
double weight;/*体重*/
double bmi; /*BMI*/
double ideal;//理想体重//
public:
void SetName(const char *n);//名前をセット//
void Setheight(double height); //身長をセット//
void Setweight(double weight);//体重をセット//
void calcBMI();//BMIを計算する//
void calcideal();//理想体重を計算する//
char *Name(); //氏名を返す//
double getheight();//身長を返す//
double getweight();//体重を返す//
double getbmi();//Bmiを返す//
};
このようになったのですが違っていたら教えていただきたいです
No.2
- 回答日時:
>メンバ変数の値を変更したものを複数作ると解釈していました、、
ずいぶん限定的な考え方ではありますが、まぁ感覚としては間違っていないです
定番の表現、説明ですが
クラスというのは設計図です、設計図というより設計図のテンプレートですかね?
例えば、「車」というクラス(設計図)を作ります
「車」というものに必要な情報
形、排気量、色、車種名、...etc
それらを記入するための場所を準備します(メンバ変数)
情報を入力すればあとは自動で車を作成したりする手順があれば楽ですね(コンストラクタ)
しかし、情報だけあっても車は動きません
アクセルを踏んだら動くといったような処理も必要です
なので、アクセルを踏んだら排気量などを元に速度を出すという機能を追加します(メンバ関数)
車はいずれ廃棄します。ただ廃棄するにしてもただゴミ捨て場にポイというわけにはいきません
リサイクルをするべき部品や特別な廃棄方法が必要なものもあるでしょう
そういった廃棄方法や廃棄手順が書かれたものも作ります(デストラクタ)
さあ、クラスが完成しました。
じゃあこの設計図を元に車を作りました!
というのがインスタンス(実体化)です
ちょっとオリジナル盛り込んでいるので分かりにくいかもしれません
>問題は上記なのですが
問題を軽く見ましたが
ちょっと分からない点があります
これはクラスファイルは複数作れということでしょうかね?
複数インスタンスを作成と聞いたので
例えば、複数人や複数個の結果を表示すると思ったのですがそうではなさそうですね
おそらく各機能ごとにクラスを作れということなのでしょうか?
授業の流れが分からないのでここら辺が憶測になってしまいます
No.1
- 回答日時:
>クラスのインスタンスを複数という意味と
そもそも、インスタンスの意味は分かりますか?
>クラスの定義はヘッダファイルとは
main.cppという処理の中心のファイルがあるとして
クラス用にclass.cppとclass.hと専用のファイルを用意するということだと思います
インスタンスの解釈としては自分では
メンバ変数の値を変更したものを複数作ると解釈していました、、
http://www.ced.is.utsunomiya-u.ac.jp/lecture/201 …
問題は上記なのですが解釈が間違っていたら教えていただきたいです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/17 18:41
- その他(プログラミング・Web制作) このプログラミングをどう組みますか? Googlecolabでやってるんですが、出来る方お願いします 1 2022/07/13 10:52
- その他(プログラミング・Web制作) どういうプログラムで組みますか?google colabでやってるんですけど、出来る方お願いします。 1 2022/07/06 09:28
- C言語・C++・C# C# 継承の問題で programに示された拡張をすべて含んだ上で,クラス Mammal に,そのオ 1 2022/07/22 09:48
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- Java 複数TBLのオブジェクトを1つの変数(オブジェクト)でまとめて管理したい 1 2022/12/17 00:12
- C言語・C++・C# VisualStudioでC++クラスを追加するとき、ファイルを所定のフォルダ下につくりたい 3 2023/08/24 17:17
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/05/21 02:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
変数名の付け方
-
複数の変数を宣言する時、同時...
-
private static という変数の修飾
-
インスタンス参照でアクセスで...
-
生成したインスタンスを削除す...
-
VB.NET getとsetの概念がわかり...
-
String a = "a"; と String b =...
-
C#において、同じインスタンス...
-
文字列を日付に変換でParseExce...
-
他のファイルの変数参照
-
フォームの存在をチェックする方法
-
変数の参照でエラーが出てしま...
-
C# インスタンスの破棄
-
C#「オブジェクト参照が必要で...
-
javaのクラスの作り方、エラー...
-
オブジェクト参照がオブジェク...
-
SerialPort処理でInvokeメソッ...
-
「インスタンス」の意味をわか...
-
【java】コンストラクタの処理...
-
インスタンスを同じ名前で作成...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
変数名の付け方
-
インスタンス参照でアクセスで...
-
private static という変数の修飾
-
VB.NET getとsetの概念がわかり...
-
C# インスタンスの破棄
-
複数の変数を宣言する時、同時...
-
C#において、同じインスタンス...
-
生成したインスタンスを削除す...
-
SQLを連続発行する時の正しい(?...
-
文字列を日付に変換でParseExce...
-
変数の参照でエラーが出てしま...
-
エクセル(複数インスタンス)...
-
フォームの存在をチェックする方法
-
VB6.0で、DLLを動的に参照したい
-
String a = "a"; と String b =...
-
C#「オブジェクト参照が必要で...
-
newしないインスタンス?実体化...
-
「インスタンス」の意味をわか...
-
SetWindowsHookExで質問
-
フィールドでのnewとコンストラ...
おすすめ情報