问题标签 [friend-class]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
760 浏览

c++ - 递归朋友类

有没有办法解决:

给出错误:

0 投票
1 回答
683 浏览

c++ - c++思维中遇到的友元迭代器和友元类迭代器有什么区别?

在 Thinking in C++ Volume 1,第 16 章:模板简介。上下文:

请注意,不要只是说:

这段代码有:

这很重要,因为名称“迭代器”已经在范围内,来自包含的文件。

Eckel 上面的真正含义是什么?它似乎friend iterator编译正确,我看不出差异。谁能告诉答案?谢谢

0 投票
2 回答
3542 浏览

javascript - javascript中的“朋友类”

我有一个创建 Widget 对象的工厂类。Factory 对象需要稍后回调 Widget 对象的“私有方法”,以向其传递一些 ajax 信息。到目前为止,我想出的唯一实现是在 Widget 中创建一个公共方法,将私有方法返回给工厂,然后删除自己,然后工厂返回新的 Widget,同时保留指向私有方法的指针. 这是一个简化的示例:

有没有更好的方法来达到我想要的效果,或者这是一个相当合理的方法?我知道它有效,只是好奇我是否正在踏入我应该注意的任何陷阱。

0 投票
5 回答
484 浏览

c++ - 为什么朋友类在静态函数调用时崩溃?

此代码编译,但使用 gcc 编译器或http://www.ideone.com/程序崩溃。这是编译器错误还是我需要了解更多关于朋友类的信息?

0 投票
2 回答
64 浏览

c++ - 朋友班不适合我?

friend class第一次尝试处理。我写了下面的代码:

编译器告诉我不能做root.x=3;,有什么问题??

0 投票
4 回答
6335 浏览

c++ - 朋友类概念如何不需要出面声明?

我最近刚刚了解friend class了 C++ 中的概念(我用谷歌搜索了一下,但这个答案让我发笑,直到我记住了最重要的部分),我正试图将它融入我的项目中现在正在工作。简洁的问题最后被挑出来,但总的来说,我对我的工作代码中完全缺乏前向声明感到困惑。

我的所有类都通过(子)文件夹分开,每个类都放在单独的.h.cpp文件中,但这应该足以让您了解依赖关系:

现在,我已经让所有这些都与所有依赖项一起实际编译(最终必须将其写到类图中才能使其工作),但现在它可以了。实际上让我感到困惑的事实是不需要前向声明。我知道以前的前向声明,以防万一,我用这个答案刷新了我的记忆。

所以,为了清楚起见,我的问题是:当声明class TLS为朋友时,为什么不需要明确的前向声明?这是否意味着friend class声明本身就是一个前向声明?对我来说,直觉上,这里缺少一些东西......而且由于它可以正常编译和工作,有人可以帮助纠正我的直觉吗?:D

PS很抱歉对这个问题和一堆代码进行了如此冗长的介绍。请不要评论我的代码概念 - 朋友们在这里很好,我很确定这对我当前的项目是正确的(从这个骨架中很难看出)。我只想知道为什么在任何地方都不需要前向声明。

0 投票
2 回答
2577 浏览

c++ - C++ 模板:部分模板规范和友元类

是否有可能以某种方式使部分模板规范成为朋友类?即考虑你有以下模板类

现在你有了部分特化,例如指针

我想要完成的是,每一个可能X<T*>都是X<S>for ANY的朋友类S。即X<A*>应该是的朋友X<B>

当然,我想到了 X 中常用的模板友元声明:

但是,这不会编译,g++ 告诉我:

test4.cpp:34:15:错误:“ template<class T> class X”的特化必须出现在命名空间范围内

test4.cpp:34:21:错误:部分特化“ X<S*>”声明为“朋友”

这根本不可能,还是有一些解决方法?

我问的原因是我需要一个构造函数来X<T*>从任意创建此类X<S>S必须是 的子类型T)。

代码如下所示:

现在,编译器当然会抱怨,这x.t在构造函数中是不可见的,因为它是私有的。这就是为什么我需要一个部分专业化的朋友班。

0 投票
6 回答
1274 浏览

c++ - 为什么我们在这里需要一个“朋友”?(C++)

qml 查看器(适用于 4.8 和 5.0)是这样实现的:

在 .h(eader) 我们有:

然后在 .CPP 文件中:

为什么friend在这里使用是必要的?我看不出任何人为什么要使用friend课程。朋友课程有什么真正用途吗(除了任何人都可以没有的外来生物)?

.h #包括

.cpp

0 投票
2 回答
704 浏览

c++ - 重载运算符为友元

我对使用这个词有一个想法friend,可以访问除自己的类之外的私有成员。例如,我有一个 A 类,需要在 AI 的方法中访问 B 类属性的私有方法,可以将该方法声明为友元。

但是,请参阅以下代码:

作为朋友,哪些好处可能会使操作员超负荷?我真的不明白为什么有人会对它感兴趣。

我已经阅读了很多关于它的内容,但我没有一个明确的想法。

有人可以写一个我可以观察到事实的小例子吗?

0 投票
2 回答
1367 浏览

c++ - 在 C++ 中使用友元函数

刚刚阅读了朋友函数,我正在尝试使用 B 类的朋友函数“打印”访问 A 类中的私有变量“数字”。我正在使用 Visual Studio。我的代码的编译给了我很多各种各样的错误,比如:

C2011:“A”:“类”类型重新定义
C2653:“B”:不是类或命名空间名称

请耐心等待我,并展示实现我目标的正确方法。

这是我的文件啊:

A.cpp:

乙:

B.cpp:

主.cpp: