friend相关内容
我试着交朋友 ostream 功能.编译器说我不能访问该类的私有成员,即使我将它声明为 friend.我读了一个类似的问题,它说问题出在namespcaes上.(问题:C++ 好友函数不能访问私有成员) 我的代码如下: 标题: #include #include //使用命名空间标准;命名空间{#ifndef BIUMATH_H#define BIUMA
..
我试图在命名空间之外定义一个类友函数,如下所示: 命名空间 A{类窗口{私人的:诠释一个;朋友无效f(窗口);};}无效 f(A::window rhs){cout 我收到一个错误,说有歧义.并且有两个候选 void A::f(A::window); 和 void f(A::window).所以我的问题是: 1) 如何使全局函数void f(A::window rhs)成为A::win
..
在类中定义的友元函数的完全限定名是什么? 我最近看到了一个类似于以下的示例.下面val()的全称是什么? #include 命名空间 foo {A类{诠释 x;上市:A(int x = 0) : x(x) { }朋友 int val(const A &a) { return a.x;}};}int main() {foo::A a(42);//使用 ADL 找到的 va
..
假设我有一个类 F 应该是类 G(在全局命名空间中)和 C(在命名空间 A). 要成为 A::C 的朋友,F 必须前向声明. 要成为G的朋友,F的前向声明是不必要的. 同样,类 A::BF 可以成为 A::C 的朋友,无需前向声明 以下代码说明了这一点,并可以使用 GCC 4.5、VC++ 10 以及至少一个其他编译器进行编译. 类 G {F类朋友;整数克;};//如果没有这个前
..
这里是一些编译和工作正常的 C++ 示例代码: A 类{上市:A() {/* 空 */}私人的:朋友 void IncrementValue(A &);整数值;};void IncrementValue(A & a){a.值++;}int main(int, char **){一个;增量值(a);返回0;} 然而,我想要做的是将 IncrementValue() 声明为静态,以便无法从另一个编
..
我想使用 Facebook Android SDK 发送好友请求.我目前正在使用此代码(我从 此处 获得): Bundle 参数 = new Bundle();parameters.putString("APP_ID","USERNAME");facebook.dialog(这个,“朋友",参数,这个); 其中 APP_ID 是我的应用程序的 Facebook ID,USERNAME 是我要添
..
我是 C++ 菜鸟,我在理解代码中的 C++ 语法方面遇到了问题.现在我很困惑. 上课日期{私人的:int 日、月、年;int正确日期(无效);上市:void set_date( int d, int m, int y );无效实际(无效);无效打印(无效);无效公司(无效);朋友 int date_ok( const date& );}; 关于“&"字符,我理解它作为引用、地址和逻辑运算符的
..
在搜索完 SO 之后,一个问题告诉我内联友元函数的 词法 范围是它在其中定义的类,这意味着它可以访问例如类中的 typedef 没有限定它们.但后来我想知道这样一个函数的实际范围是什么? GCC 至少拒绝了我调用它的所有尝试.是否可以通过 ADL 以外的方式调用示例中的函数,由于没有参数,这在此处是不可能的? 感谢标准报价,因为我目前无法访问我的副本. 以下代码 命名空间 foo{结
..
我编写了一个模板链表(在 .h 文件中),但出现链接错误. template 类链表{私人的:节点*头;节点*尾部;整数大小;上市:链表();〜链表();内联 T* Front() {return &(this->head);};内联 const T* Front() const {return (const T*)this->head;};void InsertFirst(const
..
这里在架构上有点问题. 在 C++ 中,我们有“朋友"的概念,这样的朋友类可以访问私有成员. 所以,我正在开发一个 Java 应用程序并尝试遵循 MVC 架构.我有一个控制器类,用于管理“map_objects"之间的图形连接.我想通过使用此控制器类隐藏 DTO 'map_objects' 中实际设置这些连接的函数. (即,即使控制器类实现了设置连接所需的功能,“用户"仍然可以直
..
显然这种面向密钥的访问保护模式: class SomeKey {朋友类 Foo;SomeKey() {}//也可能不可复制};类栏{上市:void protectedMethod(SomeKey);//只有 SomeKey 的朋友才能访问}; ... 还没有一个已知的名字,因此我想为它找到一个好的名字,这样我们就可以在不打断舌头的情况下参考它.建议? 应该是: 简洁 传达访问保护
..
为什么 C++ 有任何人都可以调用的 public 成员和公开 all private 成员的 friend 声明给定外部类或方法,但没有提供将特定成员暴露给给定调用者的语法? 我想用一些例程来表达接口,这些例程只能由已知调用者调用,而不必让这些调用者完全访问所有私有信息,这感觉是合理的.到目前为止,我能想到的最好的我自己(如下)和其他人的建议都围绕着不同间接性的习语/模式,我真的只是想要一
..
我们可以提高this面向密钥的访问保护模式: class SomeKey {朋友类 Foo;//更多朋友... ?SomeKey() {}//也可能不可复制};类栏{上市:void protectedMethod(SomeKey);//只有 SomeKey 的朋友才能访问}; 为了避免继续产生误解,这种模式与律师-客户的习惯用法不同: 它可以比律师-客户更简洁(因为它不涉及通过第三类代理
..
为什么在 C++ 中,友谊至少不能选择性地继承?我理解出于显而易见的原因而禁止传递性和自反性(我说这只是为了阻止简单的常见问题解答引用答案),但是缺少类似于 virtual friend class Foo; 的东西让我感到困惑.有谁知道这个决定背后的历史背景?友谊真的只是一个有限的黑客,后来发现它进入了一些不起眼的可敬用途吗? 编辑澄清:我在谈论以下场景,不是 A 的孩子暴露给 B 或 B
..
我有这样的代码: template 结构我的结构{类型;U anotherType;};类 IWantToBeFriendsWithMyStruct{朋友结构 MyStruct;//这里的正确语法是什么?}; 为模板赋予友谊的正确语法是什么? 解决方案 class IWantToBeFriendsWithMyStruct{模板 朋友结构
..
我有一个类似于下面代码的基类.我试图重载 在
..
我的代码有什么问题? template浮动类{朋友 Float运算符+ (const Float &lhs, const Float &rhs);}; G++ 只是不断警告: float.h:7: 警告:友元声明‘Floatoperator+(const Float&, const Float&)' 声明了一个非模板函数 float.h:7: 警告:(如果这不是您想要的,请确保已经
..
示例: template类基{上市:根据();朋友班T;}; 现在这不起作用...有没有办法做到这一点? 我实际上正在尝试制作一个像这样的通用类密封器: class ClassSealer {私人的:好友类密封;ClassSealer() {}};密封类:私有虚拟类密封器{//...};类 FailsToDerive : public Sealed{//无法实例化}; 我在这个网站的
..
我有一个类模板 Obj 和一个函数模板 make_obj.Obj 定义了一个 private 单个构造函数,该构造函数接受对其要绑定到的模板化类型的引用. template 类对象{私人的:夯;t;对象(T& t): t{t}{ }};模板 对象 Tmake_obj(T& t) {返回{t};} 我想要的是将 make_obj 函数声明为 friend 以便它可以创建 Obj 的,但没有其他人
..
我想执行以下操作: template 结构体{模板 朋友结构 foo;私人的://...}; 但我的编译器 (VC8) 卡住了: error C3857: 'foo': 多个模板参数列表是不允许的 我想要所有 T 的 template struct foo 朋友的所有可能的实例化. 我该如何完成这项工作? 编辑:这个 template 结构体{模板朋友结构 foo;私人的:/
..