C++初心者のためのResultOfFightの定義方法と意味について

このQ&Aのポイント
  • C++初心者の方がResultOfFightの定義方法と意味について教えてください。
  • enum ResultOfFight { PLAYERWIN, ENEMYWIN, DRAW };というコードは、C++において戦闘結果を表す列挙型を定義するものです。
  • このResultOfFightは、戦闘の結果がプレイヤーの勝利、敵の勝利、または引き分けのいずれかであることを表しています。定義することで、戦闘結果を使ったプログラムをよりわかりやすく書くことができます。
回答を見る
  • ベストアンサー

C++ 初心者です

enum ResultOfFight { PLAYERWIN, ENEMYWIN, DRAW }; class Battle { public: ResultOfFight Fight(Player* player, Trainer* enemy); }; というものがあるのですが ResultOfFight Fight(Player* player, Trainer* enemy); という部分の定義の仕方?と言いますか なぜこのように書くことができるのかが分かりません どなたかご教授していただけませんでしょうか? 学校の授業でC++しかやっていないので、 C言語はやったことがありません・・・・orz

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.2

>学校の授業でC++しかやっていないので、 >C言語はやったことがありません・・・・orz この文からするとCに関する質問のように見えますが、 提示されたコードはC++です。 何だか矛盾してませんか? それはさておき、 >ResultOfFight Fight(Player* player, Trainer* enemy); この書き方そのものは、CでもC++でも同じです。 Fightっていう名前の関数があって、それはPlayer型へのポインタであるplayerと、 Trainer型へのポインタであるenemyという、2つの引数を持ちます。 そして、戻り値の型はResultOfFightである、っていうだけのことです。

oceancat
質問者

お礼

参考になりました ありがとうございます

その他の回答 (1)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

とくに変わったテクニックは使われていないのですが..... C言語しかやってなかったら不思議に見える記述はありますが、C++しかやってなければそこではないでしょうし。 部分だけ抜き出してあるので、実際には間違っていたり推奨できない記述の可能性はありますが、この部分だけで明確に「間違い」と言える箇所はありません。 なので、現状では何を説明してよいかわかりません。 どのあたりが理解できないのか、どこがあなたの理解と違うのか、「このように」とはどの部分を指しているのか? 補足していただけないでしょうか?

関連するQ&A

  • C++ 初心者です

    enum ResultOfFight { PLAYERWIN, ENEMYWIN, DRAW }; class Battle { public: ResultOfFight Fight(Player* player, Trainer* enemy); ResultOfFight Fight(Player*player, Monster* monster) { Toumei x; x.PlusMonster(monster); return Fight(player,&x); } } 今時分はvoid Battle::Fight(){・・・・}の中身を書いているですが (1)enum ResultOfFight { PLAYERWIN, ENEMYWIN, DRAW }; への返し方 (2) ResultOfFight Fight(Player*player, Monster* monster) { Toumei x;   x.PlusMonster(monster);     return Fight(player,&x); ←これが何を意味しているかが分からない } この二つがよく分かっていません 理解していないばかりに、分かりづらく質問をしているのかもしれませんが どなたかご教授してくださると嬉しいです

  • C++/CLIでクラス内の要素を相互利用する方法

    C++/CLIでクラスの中に定義された構造体等を、複数のクラス間で相互利用したいのですが、そのようなことは可能なのでしょうか。 とりあえず以下のコードを見ていただきたいのですが、 ref class class1; ref class class2; ref class class1 { public:  enum struct enum1  {   aa,bb  };  void func1a(class1^ obj){} // 1. OK  void func2a(class2^ obj){} // 2. OK  void func1b(class1::enum1 e){} // 3. OK  void func2b(class2::enum2 e){} // 4. ERROR }; ref class class2 { public:  enum struct enum2  {   aa,bb  };  void func1a(class1^ obj){} // 5. OK  void func2a(class2^ obj){} // 6. OK  void func1b(class1::enum1 e){} // 7. OK  void func2b(class2::enum2 e){} // 8. OK }; これの4.がコンパイルエラーになります。 このような構造を定義することはできないのでしょうか。

  • enumをintとして扱う必要があるパターンはあるのでしょうか。

    enumをintとして扱う必要があるパターンはあるのでしょうか。 よく enum ENUM_SAMPLE {  A,  B,  C, }; class CLASS_SAMPLE { private:  int type; // ENUM_SAMPLEのA,B,Cしか入らない public:  int GetType(){ return type; } }; という記述を良く見かけます。 class CLASS_SAMPLE { private:  ENUM_SAMPLE type; // ENUM_SAMPLEのA,B,Cしか入らない public:  ENUM_SAMPLE GetType(){ return type; } }; のほうが良いのではないか思うのですが、intで定義することによる利点が何かあるのでしょうか。 あと、過去に // bcc利用時に問題があるのでintに変更しました int CLASS_SAMPLE::GetType {  return type; } というコメントがついたソースを見たことがあり、 自分でbccを使ってenumを返すように修正してテストしてみたことがあるのですが、何が問題なのか見つけることが出来ませんでした。 enum名を直接使用した場合に問題が発生することがあるのか、またどのような問題が発生することがあるのか、回答お願いします。

  • C言語の enum の使い方

    インターネットのサイトなどを利用してC言語を勉強しています。 いま一通り基本的な勉強が済んだところですが、enum というユーザー定義変数をどんな風に使えばよいのか、今ひとつわかりません。サンプルコードなどを見ても、 enum でなくても配列を使えば出来そうなものが多いのですが、この型の変数はどう使えば効果的なのでしょうか。 詳しい方、どうかよろしく教えてください。

  • C初心者です

    学校でC言語を習い始めたばかりの初心者です。以下のプログラムを作成したいのですが、お教え願います。ちなみに授業では整数型の変数を定義してなんちゃらとか、printfというところまでしかやってません。 1、5人の身長の平均を求めるプログラム(小数点以下切捨て) 2、1の人数5に対してNUMBERというマクロ名を与え、プログラムを書き換えよ。(#defineで定義とか言うひヒントがかいてありました) 3、#defineによるマクロ名を使うメリットは何か? という3つです。 1は変数を5個定義してやればいいんですかね?それを全部足して5で割って…、でいいんでしょうか? 2,3はまったく分かりません。 かなり簡単な質問かとは思いますが、なにぶん始めたばかりなものなので、お教え願います。 できたらプログラムリストを示していただきたいです。 宜しくお願い致します。

  • C#で参照

    C#で参照 こんにちは。 例えば、C++で class A { int &x; public: A(int &_x):x(_x){} public: void disp() { std::cout<<x<<std::endl; } }; void func() { int x=100; A a(x); a.disp(); x=200; a.disp(); } とすると、a.xとxとを連動させることができますが、同様のことをC#で行うにはどうすればよいのでしょうか? int x=100; の定義を変えずに行うことは可能でしょうか? よろしくお願いします。

  • c#のマクロ定義について

    C言語でマクロ定義の場合以下のようにヘッダファイルに#defineで定義しますが、C#の場合どのようにすればいいのでしょうか。 C言語の場合 *** test.h *** #define TEST 5 C#の場合 public const int TEST = 5; //これでいいの? 専用のclassを用意するの? 初歩的な質問ですが宜しくお願い致します。

  • VB.NETでのEnumの使用について

    こんにちは、いつも拝見させて頂いております。 今回は、VB.NETのEnumについて教えて頂ければと思い、投稿しました。 VB.NETでEnum定義をしているのですが、クラス内のEnumとして定義 しているのですが、そのクラスのインスタンスを生成しなくても クラス内のEnum定義が参照できます。 クラスのインスタンスを生成していないのであれば、そのクラス内に あるEnum定義も参照できないのではないかと考えていたのですが、 参照できたので、なぜなのかがわかりません。 自分なりに色々と調べたのですが、EnumがSystem.Enumを継承している というのはわかりましたが、それがなぜ、クラスのインスタンスを生成 しないで、クラス内のEnum定義が参照できることになるのかがわかりません。 言語は、VB.NET2005です。 一応、ここの質問一覧も検索してみたのですが、該当しそうなもの が見当たらなかったので、ここに投稿させてもらいました。 お忙しいところ、申し訳ありませんが、ご教授ください。

  • クラスオブジェクトの配列化

    C言語初心者です。 C++にて、クラスオブジェクトを配列化して使用したいと考えております。(イメージは下記のような定義になります。) しかし、実際にコンパイルしてみると、エラーとなってしまいます。 根本的になにかおかしいようです。 ■testMng.h #include "testClass.h" class testMng{  private: static testClass aa[10]; public:   testMng();   ~testMng(); } ■testClass.h class testClass{ private: static int iCnt; public: testClass(); ~testClass(); } Cygwin環境にて、gccコンパイラで行っておりますが、 上記のtestMng.hで定義しているtestClassオブジェクトを、 配列化せずに、testClass aa;とすれば、問題なくコンパイルできるのですが、何がわるいのかわかりません。 そもそも、配列化自体が無理なのでしょうか? 要因がありそうであればご教授お願いいたします。

  • c++の「:」の意味

    -------------------------------------------------- class Hoge { public:  Hoge(const char* msg)   :kMessage_(msg), kCount_(100000000), kInterval_(1000000)   {} … private:  const char *kMessage_; -------------------------------------------------- c++の勉強をしています。 いろいろ検索して調べていると、こんな感じのコードに出会いました。 「:」の部分の意味を教えていただきたいです。★ googleで検索しようとしたのですが、「:」をうまく使えず見つけれなかったので、 検索の仕方か説明サイトも教えていただけると助かります。 雰囲気的に、constな定数変数を引数で設定したいときに、 メンバ変数名と同じ名前のsetterが暗黙に定義される的な感じだと思うのですがはっきりしたいです。 よろしくお願いします。