C ++:如何从不同的类中减去两个整数?

时间:2016-10-04 22:30:18

标签: c++

在我说什么之前,我想澄清一下我是一名初学程序员,并且只用了大约2个月的C ++。

我已经有这个问题了一段时间,我似乎无法找到答案!

为了说清楚,我并不是想优化这个“游戏”。我只是想练习我的课程。

以下是示例:

#include <iostream>

using namespace std;

int main() {
    Health = Health - dmgNinja;
    cout << Health << endl;    
}

在单独的类标题中:

class Enemy {
public:
    void dmgNinja();
};

在单独的课程中cpp:

int dmgNinja = 42;

namespace std {

void Enemy::dmgNinja() {
    cout << dmgNinja << endl;
}

}

在单独的类标题中:

class Bandit {
public:
    void Health();
};

在单独的课程中cpp:

int Health = 100;

namespace std {

void Bandit::Health() {
    cout << Health << endl;
}

}

简而言之,我想知道如何从不同的类中减去两个变量,然后在主文件中将其打印出来,确保更改的变量保持不变。

3 个答案:

答案 0 :(得分:1)

以下是一个例子:

class Taco
{
 public:
   int sauce;
};
class Burrito
{
  public:
    int cheese;
};

int main(void)
{
  Burrito b;
  Taco    t;
  b.cheese = 5;
  t.sauce  = 3;
  int difference = 0;
  // Here's the subtraction
  difference = b.cheese - t.sauce;
  return EXIT_SUCCESS;
}

答案 1 :(得分:0)

要回答直接问题,您需要在标头或main.cpp文件中将Health声明为extern

但是你还有很多其他问题,包括使用极其沮丧的全局变量。将其作为学习过程的一部分并成为初学者。

顺便说一下,你的问题极具误导性,因为你实际上要做的只是从另一个整数中减去一个整数,然后将结果分配回其中一个操作数。您的代码在任何时候都不会被使用。

答案 2 :(得分:0)

我在那里看到两个问题。

关于从不同类中减去两个属性,它主要取决于您打算执行减法的位置。

规则是必须从那里看到这两个属性 例如,它可能是公共属性(在任何地方都可见),或者具有访问器方法的私有属性,或者是朋友类的属性。

所有这些关于隐私的大惊小怪一开始看起来很麻烦,但这就是使大量代码(类似10,000行或更多)易于管理的原因。如果限制对给定值的访问,只有一小部分代码可能会修改它,并且找到错误的原因将比检查整个项目的错误代码行更容易。 /> 除此之外,声明变量public或private对编译器实际生成的代码没有影响。这完全是为了控制事情 这就是为什么不断提醒初学者,全局变量是错误的简单方法。决定将数据放在何处以及程序的哪些部分将被授权读取或写入它是一项额外的工作。在小型教育案例中,似乎没有任何目的 但是,一旦你编写了自己的几百行代码并通过一些调试会话,你很快就会意识到它是多么有用。现在让我们说你需要一点点信念:)。

现在关于“无论变化哪个变量都保持变化”,它基本上是变量寿命的问题。 希望你能有关于此的讲座。全局变量,局部变量,动态变量。生命的三位一体。

在你的情况下,我不太明白你的问题是什么。如果您的目标确实是打印差异,那么您甚至不需要变量来存储它。

void print_diff(void)
{
    int a = 5;
    int b = 3;

    printf ("%d - %d = %d\n", a, b, a-b);
}

此处只有两个值存储在变量ab中 只有在获取值所需的时间内,计算机内部存在差异a-b,减去它们并让printf显示结果。
您可以将这种差异存储在某些本地,全局或动态变量中,甚至可以将其写入磁盘以使其在硬盘驱动器未发生故障时保持最新状态,但重点是什么?