相关疑难解决方法(0)

干净的C++粒度朋友相当于?(答案:律师 - 客户成语)

为什么C++有public成员,任何人都可以调用和friend声明所有 private成员公开给定的外部类或方法,但没有提供语法将特定成员暴露给给定的调用者?

我想表达一些例程的接口,这些例程只能由已知的调用者调用,而不必让那些调用者完全访问所有的私有,这感觉是一个合理的想法.我能想出的最好的(下面)和其他人的建议到目前为止围绕着成语/不同间接性的模式,我真的只想要一种方法来获得单一的,简单的类定义,明确指出哪些来电者(比更细粒度),我的孩子,或绝对任何人)可以访问哪些成员.表达以下概念的最佳方式是什么?

// Can I grant Y::usesX(...) selective X::restricted(...) access more cleanly?
void Y::usesX(int n, X *x, int m) {
  X::AttorneyY::restricted(*x, n);
}

struct X {
  class AttorneyY;          // Proxies restricted state to part or all of Y.
private:
  void restricted(int);     // Something preferably selectively available.
  friend class AttorneyY;   // Give trusted member class private access.
  int personal_;            // Truly private state ... …
Run Code Online (Sandbox Code Playgroud)

c++ design-patterns private friend

47
推荐指数
2
解决办法
7527
查看次数

Java和C++中默认是私有类还是公共类?

默认情况下,Java和C++中的类是私有的还是公共的?

c++ java class-visibility

28
推荐指数
3
解决办法
5万
查看次数

有限访问的朋友类

我想创建一个B类的朋友类.我想这样做,因为这些非常相互作用,A需要改变B类的内部(我不希望使用public公开).但我想确保它只能访问几个选定的函数而不是所有函数.

例:

class A
{
};

class B
{
private:
 void setState();
void setFlags();
friend class A
};
Run Code Online (Sandbox Code Playgroud)

我希望A能够访问setState但不能访问setFlags ...是否有设计模式或这样做的好方法,或者我在这种情况下完全访问或完全没有访问权限.

谢谢

c++ design-patterns

12
推荐指数
2
解决办法
1608
查看次数

标签 统计

c++ ×3

design-patterns ×2

class-visibility ×1

friend ×1

java ×1

private ×1