问题标签 [friend-function]

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 回答
1494 浏览

c++ - 重载堆栈的比较运算符

我需要一些帮助:我被要求对 2 个堆栈的比较运算符进行一些重载。我已经弄清楚了语法,我只是在编写定义时遇到了麻烦。所以请帮助我。

至少一个运算符重载,然后我会为其余的。

0 投票
1 回答
316 浏览

c++ - 访问好友功能

在从 main 访问 Class_D 中声明的函数朋友时需要帮助。指导继续。

请指导我进行修改以使用朋友功能访问 class_d 的私有成员。

我正在尝试探索朋友功能的特点。我添加了 Class_A.cpp/.h Class_D.cpp/.h 和 main.cpp。

0 投票
1 回答
76 浏览

templates - 使用命名空间和友元声明的模板函数中的自动类型推导在 Clang 中不起作用

我在 linux 上使用 Clang 3.3 编译一段 C++ 代码时遇到了一些麻烦。但是,同一段代码可以使用 gcc 4.8.2 以及 Intel 编译器进行编译。所以我想我的代码是否真的合法。通常我更相信叮当这些问题;)

无论如何,这是代码片段:

你怎么看?我应该将它作为 Clang 中的错误发布还是实际上格式不正确?

提前致谢, 拉斐尔

0 投票
1 回答
310 浏览

c++ - 在 C++ 运算符<<重载中使用友元函数访问私有成员时遇到问题

所以我试图重载 << 运算符。从我能看到的所有来源来看,语法是正确的,但 eclipse 不喜欢它。

我遇到了几个错误: Polynomial::PrivateStruct* Polynomial::head 是私有的

并且: struct Polynomial::PrivateStruct 是私有的。

我想保持这个结构私有以隐藏实现细节。

和声明:

0 投票
2 回答
723 浏览

c++ - 没有匹配的函数调用错误

我正在尝试重载我的 << 运算符,但我想使用辅助函数,因为我正在使用一棵树,这样我的辅助函数 fn. 可以是递归的。但是,当我尝试从操作员函数调用帮助程序时,我得到了这个没有匹配的函数调用错误。

并在 .h 文件中

哦,这是错误:

no matching function for call to 'Polynomial::printPoly(Polynomial::Node*&, std::ostream&) const'

0 投票
0 回答
97 浏览

c++ - 链接错误:undef 引用 - 友元函数

只是突出的细节:

编译

错误

内存参考.h

内存参考.cpp

memref_test.cpp

我已经绞尽脑汁了六个小时,在谷歌上搜索和搜索,我需要帮助。谢谢。

0 投票
2 回答
85 浏览

c++ - 模板结构的友元函数,其参数类型取决于结构的内部

我想定义一个带有友元函数的模板结构,其参数类型派生自结构中定义的类型。如果相应的结构已经被实例化,友元函数应该可以在没有明确类型说明的情况下被调用。

以下方法似乎有效:

如果使用不依赖于结构内部的参数类型定义友元函数,则可以将接口和实现分开,如下所示:

现在我想知道这两种方法是否可以结合起来。以下方法不起作用(clang++ 3.3、g++ 4.8.2、-std=c++11):

我猜最后一种方法失败了,因为模板参数推导不适用于::。有任何想法吗?

0 投票
2 回答
933 浏览

c++ - 类定义交叉引用时如何声明友元方法?

我想定义两个类,A 和 B。A 有一个数据成员,它是 B 类对象并且在类内初始化。A 也有一个方法来检索此 B 类型数据成员中的值,并且此方法将被声明为 B 中的友元方法。这是我的代码:

不出所料,由于 A 类定义中的未知类型 B,编译失败了。我曾尝试在源代码中交换 A 和 B 的定义,结果更糟。有没有办法解决 A 和 B 之间的交叉引用问题?

0 投票
1 回答
357 浏览

c++ - 与模板类中的友元函数链接错误

使用自制的 Complex 类时出现链接问题。

类定义:

abs的实现:

我像这样使用函数 abs :if(abs(z) <= 2)

以下是我得到的一些错误:

使用Complex<float>而不是Complex<long double>. 我使用 Visual C++ 2012。如果你能给我一些关于如何解决这个问题的提示,我会非常高兴。谢谢你。

0 投票
2 回答
12198 浏览

c++ - 将命名空间声明为类的朋友

我想知道是否有一种方法可以让我们使用类在特定命名空间中定义所有函数friend

特别是,我有一堂课,例如:

和命名空间B为:

现在,我宁愿避免在类定义中写 5 行来使命名空间的所有五个函数都B与类成为朋友,C而只是告诉编译器命名空间中定义的所有函数B都是类的朋友C(即可以访问其私有成员)。

我想一个快速的解决方法是将命名空间更改为一个类并将函数定义为其静态成员,然后将该类声明为 classB的朋友C。但是,出于好奇,我想知道命名空间是否也可以做到这一点?

提前致谢。