细粒度访问说明符 c++
Fine grained access specifiers c++
我有以下类:-
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的朋友,那么f&g都可以从B,C,D,E,F(以及A的其他私人成员)访问,这不是我想要的。
这是否可能,还是应该更改我的对象模型?
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();
}
相关文章:
- 激励'inline'说明符的真实世界示例?
- 缺少类型说明符,显式类型为"缺少错误"
- 为什么mpfr_printf与十六进制浮点(%a转换说明符)的printf不同
- 叮叮当当在修复时插入多个"覆盖"说明符
- 编译器错误:destuctor 的更宽松的抛出说明符
- 使用说明符 extern 声明的C++中的标识符链接
- 同时具有"外部"和"内联"说明符的变量
- 与 tesseract::TessBaseApi() 相关的 Tesseract-OCR 出错(预期的类型说明符)
- 错误:不能使用"显式"说明符声明 bool'
- 基于范围的 for 循环range_declaration中各种说明符之间的性能差异
- 为什么转换函数声明不需要至少一个定义类型说明符
- NOEXCEPT 函数调用运算符的说明符_Not_fn
- 参数包内 noexcept 说明符
- C++需要所有声明的类型说明符和预期的非限定 id(需要调试帮助)
- 格式说明符C++有什么问题
- 0x%08lx 格式说明符在 printf 语句到 cout
- 私钥解密代码使用公共接口说明符到 BSAFE 库 v6.0?
- 在 CRTP 中使用嵌套名称说明符
- 函数模板签名中忽略的成员类型def 的访问说明符
- VS2019 C++未知覆盖说明符