如何在 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(); }
}
几个选项:
创建函数static
。如果函数不使用 class 的任何非静态成员,则可以这样做。然后你可以在B::g
内调用A::f(variable2)
B
从A
继承。然后您可以从 B::g
访问 A::f(variable2)
有一个 A
的 实例 作为 B
的 成员 。然后您从该实例访问 A::f(variable2)
。
将 A
的一个实例传递给函数 B::g
。通过该实例访问函数。
(1) 如果 classes 只是作为一种将相关功能捆绑在一起的方式,则效果很好。 (虽然我更喜欢在这种情况下使用 namespace
。)
如果继承结构合乎逻辑,(2) 效果很好。如果不是,请不要这样做。
(3) 是常做的事情。
我有以下 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(); }
}
几个选项:
创建函数
static
。如果函数不使用 class 的任何非静态成员,则可以这样做。然后你可以在B::g
内调用B
从A
继承。然后您可以从B::g
访问 有一个
A
的 实例 作为B
的 成员 。然后您从该实例访问A::f(variable2)
。将
A
的一个实例传递给函数B::g
。通过该实例访问函数。
A::f(variable2)
A::f(variable2)
(1) 如果 classes 只是作为一种将相关功能捆绑在一起的方式,则效果很好。 (虽然我更喜欢在这种情况下使用 namespace
。)
(2) 效果很好。如果不是,请不要这样做。
(3) 是常做的事情。