私の友人と私はC++を学んでおり、このプログラムで私たちが直面しているすべての問題を打ち負かすことができました(そしてそうすることでたくさんのことを学びました)が、これは私たちを一日中頭を悩ませています。私たちは自分たちで解決しようとするだけでなく、Stackoverflowの関連する質問を調べたり、大量のGoogle検索を実行したりするのに数え切れないほどの時間を費やしてきました... 。
基本的に、テキストベース(コンソールのみ)のRPGを作成しようとしていますが、唯一のヘッダーファイルで定義されたクラスを使用してプレーヤー統計を作成するところまで到達しました。クラスには3つのコンストラクターがあります(関数のオーバーロードを使用)もちろん)そしてゲームエラーなしで実行することはできますが、クラスメンバー変数の値を実際に編集することはできないようです!
これは私たちのクラスです:
//File OverHeader.h
class PlayerStatistics
{
public:
PlayerStatistics(int HitPoints, int MagickaPoints, int Fatigue, int Damage, int Defense, int Dodge, int Block, int SpellCastChance);
PlayerStatistics(int Experience, int Level);
PlayerStatistics();
int HitPoints;
int MagickaPoints;
int Fatigue;
int Damage;
int Defense;
// Chance Based System (Relies on Fatigue Level)
int Dodge;
int Block;
int SpellCastChance;
int Experience;
int Level;
};
そして主な機能:
#include <iostream>
#include <string>
#include "OverHeader.h"
// MAIN FUNCTION DEFINITION
int main()
{
PlayerStatistics PlayerStats(20, 20, 20, 20, 20, 20, 20, 20);
PlayerStatistics PlayerStatsLevel(0, 1);
//continued with code irrelevant to this question.
}
問題は、Main関数の行が、クラス内の整数変数を実際にそれらの値に設定しないことです。これらの2行の後で、整数値を次のように設定する必要があります(デモンストレーションの目的で)。
int HitPoints == 20;
int MagickaPoints == 20;
int Fatigue == 20;
int Damage == 20;
int Defense == 20;
int Dodge == 20;
int Block == 20;
int SpellCostChance == 20;
int Experience == 0;
int Level == 1;
しかし、奇妙なことに、これらの整数のいずれかを出力すると、単に乱数が出力されます(おそらくメモリは現在の値をアドレス指定します)。
3つのコンストラクターは、実際にはここで適切に定義されています(ただし、Main.cppにはありません)。
// PlayerCreation.cpp
PlayerStatistics::PlayerStatistics(int HitPoints, int MagickaPoints, int Fatigue, int Damage, int Defense, int Dodge, int Block, int SpellCastChance)
{
}
PlayerStatistics::PlayerStatistics(int Experience, int Level)
{
}
PlayerStatistics::PlayerStatistics()
{
}
それが私たちの問題です。すべてを十分に明確に説明したことを願っています。これらのクラスメンバー変数の値を実際に編集するのに役立つかどうか教えてください。すべての助けに感謝します!