2016-05-01 7 views
0

私は戦いのシーケンスを作ろうとしています。今私はプロトタイピングです。C++:クラス内のオブジェクトのデータメンバーに値を割り当てる

私がしたいことは、クラス内の戦いのシーケンスのための関数を定義し、戦うために異なるモンスターを初期化することです。私は名前の 'モンスター'で.hファイルのデータ構造を作成しました。私はクラス内でモンスタートラを初期化します。しかし、私がその音と絵を与えるために私のcppに入ると、私は間違いに遭遇します。

私は最終的にやりたいことはある:ここでは

#include <iostream> 
#include "CombatSeq.h" 
int main() { 

    // Initiate Combat with a Tiger. 

    CombatSeq c; 
    c.fight(c.tiger); 
} 

は私のコードです:

.hファイル:

#ifndef SOURCE2_COMBATSEQ_H_ 
#define SOURCE2_COMBATSEQ_H_ 

#include <iostream> 

struct monster { 
    std::string sound; 
    std::string picture; 
}; 

class CombatSeq { 
public: 
    void fight(monster t); 

    monster tiger; 

private: 

}; 
#endif /* SOURCE2_COMBATSEQ_H_ */ 

のcppファイル:

#include "CombatSeq.h" 
#include <iostream> 


void CombatSeq::fight (monster t) { 
    std::cout << t.picture; 
    std::cout << t.sound; 


} 

// What would I put here to give tiger.sound & tiger.picture values? 
// I have tried: 

monster CombatSeq::tiger; 
CombatSeq::tiger.sound = "tiger.ogg"; 

// But to no avail. 

ありがとうございます!

答えて

0

これにはさまざまな方法があります。コンストラクタは良い選択かもしれません。あなたがが、行くことにしようとしているところでCombatSeqは型モンスターの部材を有する、と述べ

int main() { 

// Initiate Combat with a Tiger. 

CombatSeq c; 
c.tiger.sound = "tiger.ogg"; 
c.tiger.picture = "tiger.jpg"; 
c.fight(c.tiger); 
} 

は、私には非常にほとんど意味がありません....あなたを取得します。それ以上の情報なしでそれを行うためのより良い方法をお勧めすることは難しいです。

+0

私はCombatSeq(または別のクラス)内でトラを好きにしたい理由は、単に整理されるだけです。私はすべてのモンスターを1つの場所にロードして、異なるクラスで使用できるようにしたいと思います。私はおそらくすべての私のモンスターで新しいクラスを作ることができますか? – clorxwetwipe

+0

妥当なオプションの1つは、クラスのすべての静的メンバーにすることです。今のように、CombatSeqのすべてのインスタンスには、それ自身の虎のコピーがあります。もちろん、これは独自の構文を持ち、それ自体の問題のセットです。他のオプションと比較するために残しておきます。 – Jfevold

+0

それは私が探しているものではありません。モンスター(モンスタートラ)の新しいオブジェクトを初期化できますが、メンバー(tiger.picture、tiger.soundなど)に値を割り当てることができないのはなぜですか? – clorxwetwipe

関連する問題