Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使一个friend类只能特殊访问另一个类的1个函数?_C++ - Fatal编程技术网

C++ 使一个friend类只能特殊访问另一个类的1个函数?

C++ 使一个friend类只能特殊访问另一个类的1个函数?,c++,C++,可能重复: 我有A类和B类。我想要class A访问class B的一个私有功能;但仅此而已,其他一切都没有。可能吗 例如: class A { //stuff }; class B { int r; // A cant use this MagicFriendKeyword A void func(); // A can use this public: ... }; 如果类A中有一个(或几个)成员函数希望使用类B的私有成员函数,则可以将这些一个/几个函数声明为友元函数。

可能重复:

我有
A类
B类
。我想要
class A
访问
class B
的一个私有功能;但仅此而已,其他一切都没有。可能吗

例如:

class A {
  //stuff
};

class B {
  int r; // A cant use this
  MagicFriendKeyword A void func(); // A can use this
public:
  ...
};
如果类A中有一个(或几个)成员函数希望使用类B的私有成员函数,则可以将这些一个/几个函数声明为友元函数。例如

class B {
    // ...
    friend void A::mutateB( B * );
    // ...
};

请参阅的副本。这个问题给出了一个例子,说明你如何实现你的要求;实际上可能是一个更好的复制品。另请参见,它试图对其进行推广。我想我们最终的名字是“密钥朋友成语”。其思想是,只有特定的类才能创建“passkey”类型,并且该函数只接受特定的passkey,授予访问权或“友谊”。与所引用的讨论相比,解决方案更多,而且取决于上下文更好。特别是,将
func
分解为一个接口。请不要关闭开放式问题,除非类似的旧讨论同样是开放式和完整的。我只希望A能够调用B的1个私有函数。我希望A类的所有人都能访问B类的一个函数,因为A中有数百个函数会使用它。这不是问题所在。这仍然允许B的所有成员访问该函数。他想授予B的单个成员访问权限。@JoshD不是真的,我想授予B的一个函数的所有访问权限,该函数是private@Milo当前位置我在对问题的评论中提到的问题中描述的习语是否充分解决了您的问题?如果没有,也许你可以解释一下原因,这样人们可以更好地回答你的问题。