クラスの宣言されたエンティティがあり、テンプレートを変更せずに、事前に作成されたさまざまなテンプレートをそれに割り当てたいと考えています。const を使用してもうまくいかないようです。
例:
Weapon w1;
w1 = Sword; // premade weapon.
w1.reducedamage(1); // for example a debuff
この場合、既製の武器のダメージが減少し、テンプレートとして使用できなくなります。この問題は、敵に対してより深刻になります。
例:
Enemy enemy;
enemy = enemies[r] // r being a randomly generated integer and enemies a list of enemy templates
Fight(player,enemy); // this method would resolve a fight between the two entities of the type Character.
この問題は、プレーヤー クラスでは見えません。プレーヤーはすべてのゲーム メソッドに沿って渡される単一の参照であるためです。プレーヤーは 1 つしかないためです。プレイヤーが戦うたびに、敵のテンプレートが「破損」します。
一般に、常に値渡しを行うテンプレートまたはクラス/構造体を作成するにはどうすればよいでしょうか。つまり、最初のクラスのプロパティは 2 番目のクラスと同じ値を持ち、2 つのクラス間に関係はありません。
これで得た唯一の成功は、テンプレートを持つすべてのクラスの各属性を同じクラスの別のエンティティに手動でコピーするメソッドを作成することです。しかし、新しいクラスが追加されたり、古いクラスが変更されたりするたびに常にアップグレードする必要があるため、これは非常に非現実的です。