C++ クラス 出力の仕方

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
誤字ラ

C++ クラス 出力の仕方

#1

投稿記事 by 誤字ラ » 3年前

関数、クラスの理解を深めようと書いたコードです。
が、出力の仕方がわからすに困っています。
配列を使えばできるとアドバイスはもらったのですが、いくら考えても、いろいろ試してみてもうまくいかずに手詰まり状態になっていました。
また、現段階では何ができて何ができないのかもわかっていない状態であり、この書き方では出力すること自体が不可能なのではないかと言う思いが過り出したので、質問させていただきました。

具体的にいうと
ミュウツーのサイコキネシス
ミュウに90ダメージ
というかたちで出力したいです。

ダメージ計算のところはまだ書いていませんが、要は変数に入れたものを別々に出力したいということです。

条件として、shared_ptrを使ってやることとします。

アドバイスなど回答よろしくお願いいたします。

コード:

#include<iostream>
#include<string>
#include<memory>

class Monster {
public:
 std::string Name;
 int Hp;
 int Atk;
 int Def;

 Monster(std::string setname, int sethp, int setatk, int setdef) {
  Name = setname;
  Hp = sethp;
  Atk = setatk;
  Def = setdef;
 }
};

class Move {
public:
 std::string Name;
 int Power;
 int Dex;

 Move(std::string setname, int setpower, int setdex) {
  Name = setname;
  Power = setpower;
  Dex = setdex;
 }
};

void main()
{
 std::shared_ptr<Monster> Mew(new Monster("ミュウ", 100, 100, 100));
 std::shared_ptr<Monster> Mewtwo(new Monster("ミュウツー", 150, 150, 150));

 std::shared_ptr<Move> psyshock(new Move("サイコショック", 80, 100));
 std::shared_ptr<Move> psyhic(new Move("サイコキネシス", 90, 100));

 system("pause");
}

アバター
usao
記事: 1635
登録日時: 7年前

Re: C++ クラス 出力の仕方

#2

投稿記事 by usao » 3年前

> 条件として、shared_ptrを使ってやる

できていないこと(出力)と全く関係ない追加条件を課しても
考えることが増えるだけで良いことはないと思いますが…


> 配列を使えばできるとアドバイスはもらった

そのアドバイスをくれた人にもう少し訊いてみてはいかがでしょうか…
オフトピック
というのは,
正直,出力と配列との間に何の関係があるのかすら外野には図りかねますし,
前記 shared_ptrを使うという条件 の意味等もわかりません.
おそらく,「作るべきプログラムの形」が想定されているのかと想像しますが,
そういった背景事情を知らない相手と「望む形」を共有して話をすることは難しいのではないかと.

アバター
purin52002
記事: 235
登録日時: 4年前
連絡を取る:

Re: C++ クラス 出力の仕方

#3

投稿記事 by purin52002 » 3年前

こんにちは

出力自体は以下のようにできると思います。

コード:

cout << Mewtwo->Name << "の" << psyhic->Name << endl ;
cout << Mew->Name << "に" <<psyhic->Power << "ダメージ" << endl ;
配列を使うとなると大きさが2の配列にMonsterを格納するのかな?

コード:

const int monster_num = 2 ;
shared_ptr<Monster> monster_array[monster_num] = { Mew, Mewtwo } ;
for(int i= 0; i < monster_num; ++i) {
    //Disp(攻撃側 ,被弾側 ,攻撃技);
    //ダメージ出力をする関数とする
    Disp(monster_array[i], monster_array[(i+1)%monster_num], psyhic);
}
最後に、shared_ptrを使うときはstd::make_sharedを使うと便利かもしれません^^

コード:

std::shared_ptr<Monster> Mew(new Monster("ミュウ", 100, 100, 100));
auto Mew = std::make_shared<Monster>("ミュウ", 100, 100, 100);//上と同じ結果になる
c++初心者を自負しています。
質問者さんには今後私にプログラミングを教えてくれるようにやさしく丁寧に教えるつもりです。ぎぶあんどていく^p^
回答者さんには精一杯感謝します。ぎぶおんりー^p^

誤字ラ

Re: C++ クラス 出力の仕方

#4

投稿記事 by 誤字ラ » 3年前

>>usao様
あいまいな質問で申し訳ございません。
shared_ptrを使うこととしたのは、配列というアドバイスをもらった方から「.」を使ったやり方よりこのほうがわかりやすいという助言をもらったので、そのやり方で縛ってやっていました。
確かにアドバイスをもらった方に訊いたらよいのですが、多方面からの話を聞きたくてこちらでも質問させていただきました。

>>purin52002様
結果だけ見てしまえば割と初歩的なことを聞いてしまっていたみたいですね...orz

配列でのやり方、便利なやり方などプラスαまで教えていただき非常に助かりました。
ありがとうございました!

返信

“C言語何でも質問掲示板” へ戻る