プロが教える店舗&オフィスのセキュリティ対策術

c++の課題で
クラスのオブジェクト(インスタンス)を複数個作成し、結果を表示すること。

クラスの定義は、ヘッダファイルに記述すること(勿論、クラスの実現部は別ファイルにする)。
 の2つの問題文の意味についてなのですが、
クラスのインスタンスを複数という意味と
クラスの定義は、ヘッダファイルにという点がよくわかりません。
クラスの定義はヘッダファイルとは自分でクラスの定義を書いたファイルを作り別ファイルでインクルードするということで良いのでしょうか?

A 回答 (6件)

>実装部を記述するファイルにインクルードすれば良いのでしょうか?


そうです
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2018/05/16 11:34

>このようになったのですが違っていたら教えていただきたいです


合っていると思いますよ
あとはメンバ関数の実装部を作れば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);
と、こんな感じでしょうかね
    • good
    • 0
この回答へのお礼

何から何までありがとうございます。。
問題にはクラスの定義は、ヘッダファイルに記述すること(勿論、クラスの実現部は別ファイルにする)。
とあるのでクラスを記述したファイルをヘッダファイルにして
実装部を記述するファイルにインクルードすれば良いのでしょうか?

質問ばかりになってしまい申し訳ありません。

お礼日時:2018/05/16 11:27

>自分がいかんせん初学者なものでクラスとインスタンスがごちゃまぜになり


そうですねー
人によってどう説明したらいいかが変わりますし
私自身説明は苦手なので上手く伝えられるかは分かりませんが

細かい部分は違います
ざっくりとしたイメージとしては
int型ってありますよね
これってintというクラスです
int a;
とやるとintというクラスを使ってaというインスタンスを生成しているんです
int a = 0;などで初期化すると思いますが
実はこういう風に書けます
int a(0);
これだと分かりやすいと思うのですが
aというインスタンスを生成する際に
0という値をコンストラクタに渡すことで
0という値で初期化しているということです
これらの動作がintというクラスで定義されています

複数のインスタンスを生成するということは
int a;
int b;
int c;
これで三人分のインスタンスが作れました
というようなことですね
    • good
    • 0
この回答へのお礼

ご説明ありがとうございます。。
クラスを自分の解釈で記述したところ
#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を返す//


};
このようになったのですが違っていたら教えていただきたいです

お礼日時:2018/05/16 11:09

>結果を複数個表示の意味だそうです、、


じゃあ簡単な話しです
クラスを作って、表示したい人数分だけ
インスタンスを作成すればいいだけです

具体的に何がわからないのでしょうか?
    • good
    • 0
この回答へのお礼

自分がいかんせん初学者なものでクラスとインスタンスがごちゃまぜになりどのように記述したら良いか分からず、、
ということになってまして今四苦八苦しています。。
勉強不足で申し訳ありません

お礼日時:2018/05/16 10:44

>メンバ変数の値を変更したものを複数作ると解釈していました、、


ずいぶん限定的な考え方ではありますが、まぁ感覚としては間違っていないです
定番の表現、説明ですが
クラスというのは設計図です、設計図というより設計図のテンプレートですかね?
例えば、「車」というクラス(設計図)を作ります
「車」というものに必要な情報
形、排気量、色、車種名、...etc
それらを記入するための場所を準備します(メンバ変数)
情報を入力すればあとは自動で車を作成したりする手順があれば楽ですね(コンストラクタ)
しかし、情報だけあっても車は動きません
アクセルを踏んだら動くといったような処理も必要です
なので、アクセルを踏んだら排気量などを元に速度を出すという機能を追加します(メンバ関数)
車はいずれ廃棄します。ただ廃棄するにしてもただゴミ捨て場にポイというわけにはいきません
リサイクルをするべき部品や特別な廃棄方法が必要なものもあるでしょう
そういった廃棄方法や廃棄手順が書かれたものも作ります(デストラクタ)

さあ、クラスが完成しました。
じゃあこの設計図を元に車を作りました!
というのがインスタンス(実体化)です

ちょっとオリジナル盛り込んでいるので分かりにくいかもしれません

>問題は上記なのですが
問題を軽く見ましたが
ちょっと分からない点があります
これはクラスファイルは複数作れということでしょうかね?
複数インスタンスを作成と聞いたので
例えば、複数人や複数個の結果を表示すると思ったのですがそうではなさそうですね
おそらく各機能ごとにクラスを作れということなのでしょうか?
授業の流れが分からないのでここら辺が憶測になってしまいます
    • good
    • 0
この回答へのお礼

複数個の結果を表示するという解釈だと教員に確認しましたので
結果を複数個表示の意味だそうです、、

お礼日時:2018/05/16 10:34

>クラスのインスタンスを複数という意味と


そもそも、インスタンスの意味は分かりますか?

>クラスの定義はヘッダファイルとは
main.cppという処理の中心のファイルがあるとして
クラス用にclass.cppとclass.hと専用のファイルを用意するということだと思います
    • good
    • 0
この回答へのお礼

インスタンスの解釈としては自分では
メンバ変数の値を変更したものを複数作ると解釈していました、、
http://www.ced.is.utsunomiya-u.ac.jp/lecture/201 …
問題は上記なのですが解釈が間違っていたら教えていただきたいです

お礼日時:2018/05/16 09:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!