私はC++が初めてで、これに問題があります。そのため、ジェネリック サブクラスを使用して、互いのフィールドを呼び出すことができるクラスを作成しようとしています。
基本的には、ジェネリック型と、お互いに強み/弱みを持つ 3 つの型が存在するゲームを作ろうとしています。私は実際に Java の経験しかありません。この種のことを C++ に変換するのは、私には合いません。
ジェネリック型は、タイプ 1、タイプ 2、タイプ 3 の 3 つのタイプに分けられます。
ジェネリック型は具体的である必要があります
ジェネリック型には、攻撃、防御、ヒットポイントのフィールドがあります
タイプ 1、2、および 3 はすべてこれらのフィールドを継承します。
ジェネリック クラスで仮想関数を作成しようとしています。
virtual void attack(Generic* g);
問題は、たとえば作成しようとするとtype_1.attack(generic)
、ジェネリックのヒットポイントを取得するために g->hitpoints を実行したいのですが、C++ ではそのように機能しないようです。
さらに、型 1、2、および 3 にはすべてジェネリック型のヘッダーが含まれているため、何か間違ったことをしているに違いないことはわかっていますが、これら 3 つのヘッダーを main.cpp に含めたい場合は、ジェネリック 3 を宣言するとエラーが発生します。別の時間。
どうすればこれを行うことができますか?
申し訳ありませんが、これは非常に具体的な質問であり、少しあいまいです。何か明確にする必要がある場合はお知らせください
編集:これが私が話していることの基本的なセットアップです
//in generic.h
class Generic {
protected:
int hitpoints;
int strength;
int defense;
public:
virtual void attack(Generic* g);
};
//type1.h
#include 'generic.h'
class Type1 : public Generic {
void attack (Generic* g);
};
//in type1.cpp
void Type1::attack(Generic*g) {
g->hitpoints = strength - g->defense;
}