如何在c ++中从不同的类访问类成员变量

时间:2016-01-29 09:43:59

标签: c++ member-access

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

A班 { 上市: 双f(双); };

B级 { 上市: 双g(双); };

以下是相应的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)。我该怎么做呢?

3 个答案:

答案 0 :(得分:0)

将方法声明为static

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

然后你可以使用例如

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

或者你想做什么。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

一些选择:

  1. 制作函数static。如果函数不使用该类的任何非静态成员,则可以执行此操作。然后,您可以在A::f(variable2)

  2. 中致电B::g
  3. B A继承。然后,您可以从A::f(variable2)

  4. 访问B::g
  5. A实例作为B成员。然后,您可以从该实例访问A::f(variable2)

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

  7. (1)如果这些类只是用作将相关函数捆绑在一起的方式,那么效果很好。 (虽然我更喜欢在这种情况下使用namespace。)

    (2)如果继承结构是合乎逻辑的,那么效果很好。如果不是,就不要这样做。

    (3)是常见的事情。