我和我的朋友正在学习C++,虽然我们已经能够解决这个程序中遇到的每个问题(并从中学到了一大堆东西),但这个问题让我们整天绞尽脑汁。我们已经花费了无数的时间,不仅试图自己解决这个问题,而且还查看了Stackoverflow的相关问题,并进行了大量的谷歌搜索……最后,我们决定,我们只需要问一问,希望你们中的一个人知道我们的问题是什么。
基本上,我们正在尝试创建一个基于文本的RPG (仅限控制台),我们已经达到了这样的地步:我们使用一个也是唯一的头文件中定义的一个类来创建玩家统计数据,这个类有三个构造函数(当然是使用函数重载),虽然我们能够运行游戏而没有错误,但似乎我们不能以任何方式实际编辑类成员变量的值!
这是我们的班级:
//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函数中的代码行实际上并没有将类中的整型变量设置为这些值。在这两行之后,应将整数值设置为(仅用于演示目的):
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;但奇怪的是,输出这些整数中的任何一个都只会输出随机数(假设内存地址是当前值)。
这三个构造器实际上在这里被正确地定义了(尽管不是在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()
{
}这就是我们的问题,我希望我描述得足够清楚,请让我知道你是否可以帮助我们实际编辑这些类成员变量的值!感谢所有的帮助!
发布于 2012-09-15 16:30:53
这些构造函数没有正确定义:它们接受参数,但不对值做任何操作!试着这样做:
PlayerStatistics::PlayerStatistics(int Experience, int Level)
:
Experience(Experience),
Level(Level)
{
}这大致相当于:
PlayerStatistics::PlayerStatistics(int Experience, int Level)
{
this->Experience = Experience;
this->Level = Level
}当然,您希望以相同的方式初始化其他字段,并将未指定的字段设置为其默认值,但您的想法是正确的。
https://stackoverflow.com/questions/12435796
复制相似问题