问题标签 [friend]

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 投票
1 回答
4902 浏览

c++ - 重载命名空间中类模板的输出运算符

我有这个程序

编译失败,因为编译器找不到 skg::Triplet 的任何输出运算符。但是输出运算符确实存在。

如果我将 Triplet 从 skg 命名空间移动到全局命名空间,一切正常。这里有什么问题?

0 投票
3 回答
393 浏览

c++ - 一个涉及非平凡模板和友元声明的 C++ 语法问题

以下代码应该是不言自明的。关于使用的语法(这是必须使用的语法),我有两个问题。如果您能为我提供这些问题的答案,我将永远感激不尽。

我已经证实这确实是唯一正确的语法(我很高兴发现我弄错了)。我的问题更多是关于语法背后的推理,如问题正文中所述。

谢谢你的帮助。

0 投票
4 回答
7914 浏览

c++ - 如何在另一个 C++ 命名空间内的全局命名空间中定义朋友?

我想在全局命名空间中定义一个二元运算符。操作员在另一个命名空间中定义的类上工作,并且操作员应该可以访问该类的私有成员。我遇到的问题是,当在类定义中将其设为朋友时,我不知道如何确定该全局运算符的范围。

我试过类似的东西:

编译器 (g++ 4.4) 不知道如何处理它。好像这条线

被评估为(伪代码)

代替

如果我在运算符的声明中省略 :: 编译工作,但运算符则在命名空间 NAME 中,而不是在全局命名空间中。

在这种情况下如何限定全局命名空间?

0 投票
2 回答
4787 浏览

c++ - 如何从另一个命名空间中的全局命名空间定义朋友类?

在之前的问答(如何在另一个 C++ 命名空间中定义全局命名空间中的朋友?)中,给出了在引用全局命名空间中的函数的命名空间中定义朋友函数的解决方案。

我对课程有同样的问题。

如果我将 CBaseSD 放入命名空间,它就可以工作;例如,朋友类 SD::CBaseSD;但我还没有找到适用于全局命名空间的咒语。

我正在使用 g++ 4.1.2 进行编译。

0 投票
1 回答
607 浏览

ruby-on-rails - Rails 社交网络友谊的最佳资源

你们都认为向 Rails 社交网站添加“友谊”系统的最佳资源是什么?我发现的主要三个:

自指关联- Railscast
act_as_network
has_many_friends

然而,我发现 railscast 的一个往往有点简单,另外两个缺乏实现文档。任何人都可以推荐任何其他可能有助于开发我的社交网络这方面的插件或教程吗?

谢谢!

0 投票
1 回答
934 浏览

c++ - C++:为什么在 VS2005 的(模板)类中,运算符放置 new 未被识别为内联友元函数?

我继承了一个 Visual Studio 6.0 项目以转换为 2005。它包括这个奇妙的 MyClass 类,客户端代码通过在它的实例上调用placement new 在任何地方使用它(这里大大简化了):

当我在 VS2005 中运行“testfunction()”时,在放置 new 调用时,MyClass 中的运算符“inline friend void* operator new(...)”永远不会被调用。取而代之的是,“operator unsigned int*()”被调用,结果被强制转换为 void*,并且默认的放置操作符 new 被调用(所以“转换为默认放置 new”被显示)。

在 VS6 中,placement new 改为在 MyClass 中调用“inline friend void* operator new(...)”(因此显示“CMyClass friend placement new”),这是作者的意图,但随后 VS6 在一种奇怪的方式。

为什么 VS2005 不能识别使用参数相关查找的内联友元放置运算符 new?它使用参数识别 hello() 函数(因此显示“使用 koenig 查找调用 Hello”),但它不适用于放置 new。

作为参考,无论 MyClass 是否被模板化,这似乎都会发生(但为了完整起见,我将其保留为模板化)。此外,如果您在 MyClass 之外取消注释非朋友“operator new”,则该操作在 VS2005 中会被正确调用。

是什么赋予了?里面有错误吗?新位置是依赖于参数的查找的特例吗?VS2005是对还是错?这里的标准 C++ 是什么?

对于一种解决方法,我打算使用非内联朋友而不是内联,但是对于前锋和所有人来说,这变得很难看,我想先问一下这里的交易是什么。

0 投票
4 回答
43826 浏览

c++ - 如何让我的课程成为 google-test 课程的朋友?

我听说有可能让 google-test TestCase 类朋友加入我的类,从而使测试能够访问我的私人/受保护成员。

如何做到这一点?

0 投票
2 回答
1738 浏览

php - PHP:朋友类和不贪婪的调用者函数/类

除了 debug_backtrace() 之外,还有什么方法可以获取调用者函数?

我正在寻找一种不那么贪婪的方法来模拟像朋友内部这样的范围。

假设我有一个 A 类和一个 B 类。

直到现在,我一直在使用debug_backtrace(),这太贪心了(恕我直言)。

我想到了这样的事情:

如果您想将其限制为一个特定的课程可能没问题,但是假设我有 300 个课程,并且我想将其限制为其中的 25 个?

一种方法是使用接口进行聚合:

public function __construct(CallerInterface $callerObj)

但它仍然是一个丑陋的代码

此外,您不能在静态类中使用该技巧。

有更好的主意吗?

0 投票
2 回答
178 浏览

c++ - 友情和运营商重载帮助

我有以下课程

和这个源文件

我在头文件中没有其他功能(只是一个 quikie)。无论如何,“/ * * /”中的最后两个函数我无法工作,我在这里做错了什么?

第一个功能是看两个数组是否相等

0 投票
1 回答
1718 浏览

c++ - 我将“朋友班 xxxxx”放在公共部分还是私人部分有区别吗?

有什么区别吗?