friend相关内容

无法访问朋友 ostream 中的私人成员

我试着交朋友 ostream 功能.编译器说我不能访问该类的私有成员,即使我将它声明为 friend.我读了一个类似的问题,它说问题出在namespcaes上.(问题:C++ 好友函数不能访问私有成员) 我的代码如下: 标题: #include #include //使用命名空间标准;命名空间{#ifndef BIUMATH_H#define BIUMA ..
发布时间:2022-01-14 23:48:53 C/C++开发

命名空间内的类友元函数

我试图在命名空间之外定义一个类友函数,如下所示: 命名空间 A{类窗口{私人的:诠释一个;朋友无效f(窗口);};}无效 f(A::window rhs){cout 我收到一个错误,说有歧义.并且有两个候选 void A::f(A::window); 和 void f(A::window).所以我的问题是: 1) 如何使全局函数void f(A::window rhs)成为A::win ..
发布时间:2022-01-14 23:39:12 C/C++开发

为什么 C++ 友元类只需要在其他命名空间中进行前向声明?

假设我有一个类 F 应该是类 G(在全局命名空间中)和 C(在命名空间 A). 要成为 A::C 的朋友,F 必须前向声明. 要成为G的朋友,F的前向声明是不必要的. 同样,类 A::BF 可以成为 A::C 的朋友,无需前向声明 以下代码说明了这一点,并可以使用 GCC 4.5、VC++ 10 以及至少一个其他编译器进行编译. 类 G {F类朋友;整数克;};//如果没有这个前 ..
发布时间:2022-01-14 23:02:49 C/C++开发

是否可以将友元函数声明为静态函数?

这里是一些编译和工作正常的 C++ 示例代码: A 类{上市:A() {/* 空 */}私人的:朋友 void IncrementValue(A &);整数值;};void IncrementValue(A & a){a.值++;}int main(int, char **){一个;增量值(a);返回0;} 然而,我想要做的是将 IncrementValue() 声明为静态,以便无法从另一个编 ..
发布时间:2022-01-05 20:25:22 C/C++开发

变量等末尾的与号 (&)

我是 C++ 菜鸟,我在理解代码中的 C++ 语法方面遇到了问题.现在我很困惑. 上课日期{私人的:int 日、月、年;int正确日期(无效);上市:void set_date( int d, int m, int y );无效实际(无效);无效打印(无效);无效公司(无效);朋友 int date_ok( const date& );}; 关于“&"字符,我理解它作为引用、地址和逻辑运算符的 ..
发布时间:2022-01-05 11:41:33 C/C++开发

内联友元函数的范围是什么?

在搜索完 SO 之后,一个问题告诉我内联友元函数的 词法 范围是它在其中定义的类,这意味着它可以访问例如类中的 typedef 没有限定它们.但后来我想知道这样一个函数的实际范围是什么? GCC 至少拒绝了我调用它的所有尝试.是否可以通过 ADL 以外的方式调用示例中的函数,由于没有参数,这在此处是不可能的? 感谢标准报价,因为我目前无法访问我的副本. 以下代码 命名空间 foo{结 ..
发布时间:2022-01-04 11:18:56 C/C++开发

Java 的“朋友"等价物?

这里在架构上有点问题. 在 C++ 中,我们有“朋友"的概念,这样的朋友类可以访问私有成员. 所以,我正在开发一个 Java 应用程序并尝试遵循 MVC 架构.我有一个控制器类,用于管理“map_objects"之间的图形连接.我想通过使用此控制器类隐藏 DTO 'map_objects' 中实际设置这些连接的函数. (即,即使控制器类实现了设置连接所需的功能,“用户"仍然可以直 ..
发布时间:2021-12-22 09:13:21 Java开发

如何命名这种面向密钥的访问保护模式?

显然这种面向密钥的访问保护模式: class SomeKey {朋友类 Foo;SomeKey() {}//也可能不可复制};类栏{上市:void protectedMethod(SomeKey);//只有 SomeKey 的朋友才能访问}; ... 还没有一个已知的名字,因此我想为它找到一个好的名字,这样我们就可以在不打断舌头的情况下参考它.建议? 应该是: 简洁 传达访问保护 ..
发布时间:2021-12-22 08:55:18 C/C++开发

干净的 C++ 粒度朋友等价物?(答案:律师-客户成语)

为什么 C++ 有任何人都可以调用的 public 成员和公开 all private 成员的 friend 声明给定外部类或方法,但没有提供将特定成员暴露给给定调用者的语法? 我想用一些例程来表达接口,这些例程只能由已知调用者调用,而不必让这些调用者完全访问所有私有信息,这感觉是合理的.到目前为止,我能想到的最好的我自己(如下)和其他人的建议都围绕着不同间接性的习语/模式,我真的只是想要一 ..
发布时间:2021-12-22 08:50:09 C/C++开发

我们能否提高这种面向密钥的访问保护模式的可重用性?

我们可以提高this面向密钥的访问保护模式: class SomeKey {朋友类 Foo;//更多朋友... ?SomeKey() {}//也可能不可复制};类栏{上市:void protectedMethod(SomeKey);//只有 SomeKey 的朋友才能访问}; 为了避免继续产生误解,这种模式与律师-客户的习惯用法不同: 它可以比律师-客户更简洁(因为它不涉及通过第三类代理 ..
发布时间:2021-12-22 08:36:46 C/C++开发

为什么C++不允许继承友谊?

为什么在 C++ 中,友谊至少不能选择性地继承?我理解出于显而易见的原因而禁止传递性和自反性(我说这只是为了阻止简单的常见问题解答引用答案),但是缺少类似于 virtual friend class Foo; 的东西让我感到困惑.有谁知道这个决定背后的历史背景?友谊真的只是一个有限的黑客,后来发现它进入了一些不起眼的可敬用途吗? 编辑澄清:我在谈论以下场景,不是 A 的孩子暴露给 B 或 B ..
发布时间:2021-12-17 19:16:50 C/C++开发

你如何将结构模板标记为朋友?

我有这样的代码: template 结构我的结构{类型;U anotherType;};类 IWantToBeFriendsWithMyStruct{朋友结构 MyStruct;//这里的正确语法是什么?}; 为模板赋予友谊的正确语法是什么? 解决方案 class IWantToBeFriendsWithMyStruct{模板 朋友结构 ..
发布时间:2021-12-13 19:17:32 C/C++开发

C++ 模板友元运算符重载

我的代码有什么问题? template浮动类{朋友 Float运算符+ (const Float &lhs, const Float &rhs);}; G++ 只是不断警告: float.h:7: 警告:友元声明‘Floatoperator+(const Float&, const Float&)' 声明了一个非模板函数 float.h:7: 警告:(如果这不是您想要的,请确保已经 ..
发布时间:2021-12-13 18:55:20 C/C++开发

让模板参数成为朋友?

示例: template类基{上市:根据();朋友班T;}; 现在这不起作用...有没有办法做到这一点? 我实际上正在尝试制作一个像这样的通用类密封器: class ClassSealer {私人的:好友类密封;ClassSealer() {}};密封类:私有虚拟类密封器{//...};类 FailsToDerive : public Sealed{//无法实例化}; 我在这个网站的 ..
发布时间:2021-12-13 18:49:00 C/C++开发

声明模板类的模板友元函数

我有一个类模板 Obj 和一个函数模板 make_obj.Obj 定义了一个 private 单个构造函数,该构造函数接受对其要绑定到的模板化类型的引用. template 类对象{私人的:夯;t;对象(T& t): t{t}{ }};模板 对象 Tmake_obj(T& t) {返回{t};} 我想要的是将 make_obj 函数声明为 friend 以便它可以创建 Obj 的,但没有其他人 ..
发布时间:2021-12-13 18:38:48 C/C++开发

如何将模板化结构/类声明为朋友?

我想执行以下操作: template 结构体{模板 朋友结构 foo;私人的://...}; 但我的编译器 (VC8) 卡住了: error C3857: 'foo': 多个模板参数列表是不允许的 我想要所有 T 的 template struct foo 朋友的所有可能的实例化. 我该如何完成这项工作? 编辑:这个 template 结构体{模板朋友结构 foo;私人的:/ ..
发布时间:2021-12-13 18:28:20 C/C++开发