gpt4 book ai didi

c++ - 细粒度访问说明符 C++

转载 作者:太空狗 更新时间:2023-10-29 21:48:24 25 4
gpt4 key购买 nike

我有以下类(class):-

class A {
public:
// some stuff that everyone should see
protected:
// some stuff that derived classes should see
private:
// some stuff that only I can see
void f();
void g();
};

现在,我希望 f() 只能从特定的一组类(比如类 B、C、D)访问,而 g() 只能从特定的其他类集(比如类 D、E、 F)。有没有办法在 C++ 中指定它?如果我让所有类成为 A 的 friend ,那么 f 和 g 都可以从 B、C、D、E、F(连同 A 的其他私有(private)成员)访问,这不是我想要的。

这是可能的还是我应该更改我的对象模型?

最佳答案

class A_f {
friend class B;
void f();
};

class A_g {
friend class C;
void g();
};

class A: public A_f, public A_g {
friend class A_f;
friend class A_g;
private:
void do_f();
void do_g();
};

inline void A_f::f() { static_cast<A *>(this)->do_f(); }
inline void A_g::g() { static_cast<A *>(this)->do_g(); }

void B::something(A *a) {
a->f();
}

关于c++ - 细粒度访问说明符 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10836150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com