首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过其他.cpp文件中的类变量编辑公共成员变量?

如何通过其他.cpp文件中的类变量编辑公共成员变量?
EN

Stack Overflow用户
提问于 2012-09-15 16:26:07
回答 3查看 4.3K关注 0票数 0

我和我的朋友正在学习C++,虽然我们已经能够解决这个程序中遇到的每个问题(并从中学到了一大堆东西),但这个问题让我们整天绞尽脑汁。我们已经花费了无数的时间,不仅试图自己解决这个问题,而且还查看了Stackoverflow的相关问题,并进行了大量的谷歌搜索……最后,我们决定,我们只需要问一问,希望你们中的一个人知道我们的问题是什么。

基本上,我们正在尝试创建一个基于文本的RPG (仅限控制台),我们已经达到了这样的地步:我们使用一个也是唯一的头文件中定义的一个类来创建玩家统计数据,这个类有三个构造函数(当然是使用函数重载),虽然我们能够运行游戏而没有错误,但似乎我们不能以任何方式实际编辑类成员变量的值!

这是我们的班级:

代码语言:javascript
运行
复制
//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;
};

其主要功能是:

代码语言:javascript
运行
复制
#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函数中的代码行实际上并没有将类中的整型变量设置为这些值。在这两行之后,应将整数值设置为(仅用于演示目的):

代码语言:javascript
运行
复制
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中):

代码语言:javascript
运行
复制
// 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()
{

}

这就是我们的问题,我希望我描述得足够清楚,请让我知道你是否可以帮助我们实际编辑这些类成员变量的值!感谢所有的帮助!

EN

Stack Overflow用户

发布于 2012-09-15 16:30:53

这些构造函数没有正确定义:它们接受参数,但不对值做任何操作!试着这样做:

代码语言:javascript
运行
复制
PlayerStatistics::PlayerStatistics(int Experience, int Level)
:
  Experience(Experience),
  Level(Level)
{

}

这大致相当于:

代码语言:javascript
运行
复制
PlayerStatistics::PlayerStatistics(int Experience, int Level)
{
  this->Experience = Experience;
  this->Level = Level
}

当然,您希望以相同的方式初始化其他字段,并将未指定的字段设置为其默认值,但您的想法是正确的。

票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12435796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档