如何在 C++ 中从不同的 class 访问 class 成员变量

How to access a class member variable from a different class in c++

我有以下 2 个 class 头文件(A.h 和 B.h),每个头文件中都有一个函数:

class一个 { public: 双 f(双); };

class乙 { public: 双克(双); };

下面是它们对应的cpp文件:

包括"A.h"

double A::f(double variable1)
{
// do stuff on variable 1
}

包括"B.h"

包括"A.h"

double B::g(double variable2)
{
// do stuff on variable2 using f from A
}

我想在函数 g(在 B 中)中使用函数 f(在 A 中)。我该怎么做呢?

将方法声明为 static

static double A::f(double variable1)
{
// do stuff on variable 1
}

然后你可以使用例如

double B::g(double variable2)
{
    return A::f(variable2)
}

或者任何你想做的。

您需要一个 B 类型的对象来执行此操作:

class B {
public:
    A my_a;
    void g() { my_a.f(); }
}

几个选项:

  1. 创建函数static。如果函数不使用 class 的任何非静态成员,则可以这样做。然后你可以在B::g

  2. 内调用A::f(variable2)
  3. BA继承。然后您可以从 B::g

  4. 访问 A::f(variable2)
  5. 有一个 A 实例 作为 B 成员 。然后您从该实例访问 A::f(variable2)

  6. A 的一个实例传递给函数 B::g。通过该实例访问函数。

(1) 如果 classes 只是作为一种将相关功能捆绑在一起的方式,则效果很好。 (虽然我更喜欢在这种情况下使用 namespace。)

如果继承结构合乎逻辑,

(2) 效果很好。如果不是,请不要这样做。

(3) 是常做的事情。