给出:
#include <stdio.h>
class A
{
friend class B;
private:
void func();
} GlobalA;
void A::func()
{
printf("A::func()");
}
class B
{
public:
void func();
};
void B::func()
{
GlobalA.func();
}
int main()
{
B b;
b.func();
getchar();
}
所以实际上所有 B::func()
所做的就是调用 A::func()
,有没有更好的方法来做到这一点?还是编译器在编译时直接调用 A::func()
。
约束条件:
class A
创建线程并被多个其他类使用。它是一个用于管理套接字/管道的全局 IO 类,因此我认为任何类型的继承都不会顺利进行。
注意:如果这是一个可用 google 的问题,请告诉我,因为我没有搜索什么。
最佳答案
事实上 B.func() 做了一些更微妙的事情:
它不调用 A::func 而是调用 GlobalA.func() ,GlobalA 是类 A 的一个实例。
所以这里的 GlobalA 是一个单例(但以非常“原始”的方式表示为单个全局实例)
因此,无论您创建多少个 B 实例,它们都将始终调用同一个 A 实例 (GlobalA)。
关于c++ - 只调用其他类成员的类成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12565410/