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.
ありがとうございます!
私はCombatSeq(または別のクラス)内でトラを好きにしたい理由は、単に整理されるだけです。私はすべてのモンスターを1つの場所にロードして、異なるクラスで使用できるようにしたいと思います。私はおそらくすべての私のモンスターで新しいクラスを作ることができますか? – clorxwetwipe
妥当なオプションの1つは、クラスのすべての静的メンバーにすることです。今のように、CombatSeqのすべてのインスタンスには、それ自身の虎のコピーがあります。もちろん、これは独自の構文を持ち、それ自体の問題のセットです。他のオプションと比較するために残しておきます。 – Jfevold
それは私が探しているものではありません。モンスター(モンスタートラ)の新しいオブジェクトを初期化できますが、メンバー(tiger.picture、tiger.soundなど)に値を割り当てることができないのはなぜですか? – clorxwetwipe