数年前にオブジェクト指向プログラミングのクラスで学んだことを思い出して、テキスト ベースの RPG ゲームを作成することにしました。仕事を終わらせたいと思っているかどうかはわかりませんが、あまり気にしません。プログラムの書き方をもう一度学びたいだけです。
関数、データ型、およびクラスが C++ でどのように機能するかの基本を覚えた後、次のコードを書きました。
class Character
{
string Name;
public:
Character()
{
Name = "Charname";
}
string GetName(){return Name;}
void SetName(string sName){Name=sName;}
};
今、私は自分のキャラクターに人種を持たせたいと思っています。最初のアイデアは、クラス Character のサブクラスを、許可された種族ごとに 1 つずつ作成することでした。これは、オブジェクト指向プログラミングで行うことのように思えます。しかし、私はそれがどのように機能するかを考え始めました。「もしトムが人間で、クララがオークで、トムとクララが結婚しようとしているなら、エラーメッセージを出してください」みたいなことが言えるようになりたいです。私はおそらく、人間とオークが異なることを行うための異なる方法を持っていることも望んでいます.
大まかに言えば、前者では Race を Character のメンバー(属性として理解している) であるかのように扱い、前者ではあたかもそれがサブクラスであるかのように扱いたいと考えています。
人間がキャラクターのサブクラスである場合、前者は可能ですか? つまり、オブジェクトは自分がどのクラスに属しているかを知ることができますか?
そして、私は何をすべきで、なぜですか?