我想要这几次,并且无法想出一个体面的方法来做到这一点.
假设我在A类中有一个成员函数.我希望能够从一个不相关的B类调用该函数,但通常不能调用.您可能会说,"当然,将该功能设为私有,并宣布B为A的朋友." 这就是我一直在做的事情,但似乎有点矫枉过正.我真的不想让B访问A中的所有内容,只需要一个函数.
简而言之:A::func()
只能由B级调用,但B不是A的朋友.可能吗?
一种可能的方法是创建一个包装A::func
并传递包装器对象的可信类B
.这又需要包装器成为朋友A
,但是你只需要管理一个这样的类,而所有外部类都可以使用包装器.
例:
class Wrapper;
class A {
private:
void func();
/* other methods */
public:
Wrapper getWrapper();
friend class Wrapper;
};
class Wrapper {
private:
A &ref;
private:
Wrapper(A &obj) : ref(obj) { }
public:
void func() {
ref.func();
}
friend class A;
};
Wrapper A::getWrapper() {
return Wrapper(*this);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
515 次 |
最近记录: |