问题标签 [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 投票
0 回答
79 浏览

c++ - Friend 函数访问私有变量

我写了一小段代码来测试友元函数。它适用于不属于特定类的方法,但是当我尝试将它放入一个类时,它只能访问公共变量(就像任何对象一样)。

s.ip 提出错误成员不可访问。

0 投票
1 回答
1308 浏览

c++ - 在一个类中实现的 c++ 友元函数不能访问私有

我正在尝试定义 2 个类,在其中一个中声明一个友元函数并在另一个中实现它。我实际上是在尝试准确地了解在这篇文章中发现的内容:

如何只为一个特定的函数和类声明友元函数?

我阅读了答案,并认为这是有道理的。然后在我的代码中实现它,它给了我错误:

编辑:

Error 1 error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup ...\MSVCRTD.lib(crtexe.obj) - (通过添加main函数解决)

Error 2 error LNK1120: 1 unresolved externals ...\Debug\Project.exe 1 1.. - (通过添加主函数解决)

错误 3 IntelliSense:成员“one::data1”(在第 19 行声明)不可访问 ...\Friends.cpp - (即使在清理和重建项目后仍存在)

我认为这可能是我如何实现它的问题,所以我对答案中的代码进行了复制粘贴:

但我在同一个地方遇到了同样的错误:a.data1无法访问

然后我搜索并找到了更多示例,这些示例建议使用相同的技术来解决问题,但它们都在同一个地方给了我相同的无法访问的错误......

有什么我想念的吗?提供的示例(上一篇文章中建议的解决方案)应该有效吗?规范中可能发生了一些变化?

感谢您的任何帮助。D

PS我尝试对上一篇文章发表评论,以免对此提出新问题,但由于声誉低而无法发表评论(我是新来的)。

0 投票
1 回答
1256 浏览

c++ - 如何将可变参数模板函数声明为朋友?

如何将可变参数模板函数声明为朋友?

例如如下:

0 投票
1 回答
521 浏览

c++ - C ++中的朋友成员函数 - 前向声明不起作用

我遇到的情况类似于将类成员函数指定为另一个类的朋友?.

但是在我的情况下,B 类需要知道 A 类,因为它正在使用它,所以该线程中给出的解决方案对我不起作用。我还尝试对函数本身进行前向声明,但效果不佳。似乎每个类都需要其他类的完整定义......

有什么简单的方法可以解决吗?我更喜欢不涉及包装旧类之一的新类的解决方案。

代码示例:

感谢帮助者!

(顺便说一下这是我的第一个问题,我希望我能清楚地解释自己)

0 投票
2 回答
100 浏览

c++ - 命名空间、类成员 ADL 冲突

有没有办法限定打印功能,以便打印基本成员和派生成员?我可以将两个友元函数移动到它们最近的封闭命名空间:

这有效,结果如下:

outside::A 42 outside::A 42 inside::A 24

可以通过朋友功能实现相同的功能吗?也许使用using

编辑:inside::A::print(std::ostream&)击败下面的静态演员建议,https ://stackoverflow.com/a/22585103/710408 。还有其他选择吗?

0 投票
1 回答
636 浏览

c++ - 使用 C++ 中的回调函数进行帧抓取。它如何与班级交流?

我最近买了一台 GigE 相机,它与它的 SDK 捆绑在一起。其中一个示例解释了如何通过回调函数从相机中抓取帧。它的工作方式如下:

以上基于一个简单的 cpp 程序(不涉及对象)。

现在我正在尝试将功能合并到我的面向对象应用程序中(用 openFrameworks 编写)。对于如何做到这一点,我真的很模糊,而且我无法在互联网上找到足够接近的例子。

基本上我在我的header文件中做了什么:

然后在我的implementation(.cpp)文件中

把它作为朋友类很好,但我怎样才能访问ofApp类的实例化(即 bNewFrame 变量)?另外,我以后如何pImage从我的update()成员函数访问?

谢谢您的帮助!

0 投票
2 回答
1770 浏览

c++ - 如何使用共同的朋友函数来交换两个类的私有值

我在我的书中复制了这个程序。但我不明白这个程序中的一行。这一行是

朋友无效交换(class_1 &,class_2 &);

我的问题是为什么在括号中使用 & 运算符?请解释。

0 投票
2 回答
63 浏览

c++ - 这可以在不使用朋友的情况下完成吗?

可以将以下代码(我只保留相关部分)转换为使用静态成员函数而不是友元免费函数吗?如果不是,为什么不呢?我试图将它转换为以多种不同的方式使用静态成员函数并且失败了(对于不同的变体不断得到不同的编译器错误),但我从这个问题的答案中收集到你可以使用任何一个来做同样的事情。由于 C++ 语法的某些属性,这在技术上不是真的吗?我在哪里错了?

0 投票
1 回答
408 浏览

c++ - gcc的错误?模板类中好友功能的访问控制问题

我有一个模板类,我在类中定义了一个朋友函数。

如果我的理解是正确的,(4)生成函数void foo(template_class<int>),并使其成为 的朋友,这样它就可以访问上述源中的(1)和(2)template_class<int>的私有成员。template_class<int>但是(3)也应该不行,它不是 的朋友template_class<char>,只会void foo(template_class<char>)是 的朋友template_class<char>

编辑 正如@Constructor 和@Chnossos 所说,上述源代码使用gcc 4.8.1编译正常,但使用clang 3.4失败。那么哪一个是正确的呢?它只是gcc的一个错误吗?标准是否对这种情况有明确的定义?

0 投票
1 回答
3700 浏览

c++ - 在 C++ 中,如何从另一个类中获取静态函数

我想有两个类,A和B。B类中有一个静态函数,A想给这个函数加好友。

我的代码如下

A级

B类

但是编译器告诉我:

不能声明成员函数'static void B::staticFunction()'具有静态链接 [-fpermissive]

在类之外声明“static void B::staticFunction()”不是定义 [-fpermissive]

我应该怎么做才能修复这些错误?提前感谢您帮助我

编辑

谢谢各位,我终于想通了

工作代码是