Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从c+;中的不同类访问类成员变量+;_C++_Member Access - Fatal编程技术网

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

C++ 如何从c+;中的不同类访问类成员变量+;,c++,member-access,C++,Member Access,我有以下两个类头文件(A.h和B.h),每个类头文件中都有一个函数: 甲级 { 公众: 双f(双); }; B类 { 公众: 双g(双); }; 以下是它们相应的cpp文件: 包括“A.h” 包括“B.h” 包括“A.h” 我想在函数g(在B中)中使用函数f(从A开始)。我该怎么做 将方法声明为static static double A::f(double variable1) { // do stuff on variable 1 } 然后你可以使用例如 double B::g(doubl

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

甲级 { 公众: 双f(双); };

B类 { 公众: 双g(双); };

以下是它们相应的cpp文件:

包括“A.h” 包括“B.h” 包括“A.h”
我想在函数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(); }
}
有几个选择:

  • 使函数
    为静态
    。如果函数不使用类的任何非静态成员,则可以这样做。然后您可以在
    B::g

  • B
    继承自
    A
    。然后您可以从
    B::g

  • A
    的实例作为
    B
    的成员。然后从该实例访问
    A::f(variable2)

  • A
    的实例传递到函数
    B::g
    。通过该实例访问该函数

  • (1) 如果类的作用仅仅是将相关函数捆绑在一起,那么它就可以很好地工作。(尽管我更喜欢在这种情况下使用
    名称空间

    (2) 如果继承结构是合乎逻辑的,则可以很好地工作。如果不是,就不要做


    (3) 这是一件常见的事情。

    您对这个问题的表达满意吗?通过缩进问题中的代码部分,您可以使它看起来像代码。(请阅读markdown语法!)我认为静态将是一个很好的选择。谢谢。
    double B::g(double variable2)
    {
        return A::f(variable2)
    }
    
    class B {
    public:
        A my_a;
        void g() { my_a.f(); }
    }