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

c++ - 如何在将内部类作为参数的命名空间中声明友元函数?

考虑这段代码:

G++ 4.4.3 告诉我:

friendfun-innerclass.cpp:21: 错误: 'int foo::bar(A::B&)' 应该在 'foo' 中声明

但我不能声明:

在 A 类定义之前,因为 A::B 尚未声明。而且我显然不能声明“A类::B”,要声明BI类必须给出A类的定义,据我所知,“朋友”声明必须在A类的定义中。

对我来说奇怪的是,如果我将函数“bar()”从名称空间 foo 中取出,一切正常。对我来说,在命名空间内有一个函数或不在一个命名空间内会改变编译器是否接受类中的友元函数声明,这似乎违反直觉。

有没有人知道如何正确构建所有声明等以使其正常工作?

0 投票
2 回答
2457 浏览

c++ - 流运算符的 C++ 部分模板特化

我有一个 Matrix 类,它有一个与 operator<< 一起使用的友元函数。这一切都很好,但是如果 Matrix 类将 Matrix 作为其模板参数(即,当类的实例已被声明为 Matrix< Matrix< char > >),我现在想部分专门化该友元函数以使其工作方式不同。在类定义中,我首先有

我尝试添加

但这给了我来自编译器的多个声明错误。我似乎无法弄清楚如何做到这一点。

0 投票
7 回答
7981 浏览

c++ - 没有友元函数不能重载哪些 C++ 运算符?

没有友元函数,哪些 C++ 运算符根本不能重载?

0 投票
2 回答
1755 浏览

c++ - c ++错误:(私有数据成员)未在此范围内声明

假设我有这样的课程:

在这个重载的朋友函数中,我试图设置myIng

在我看来,这应该可行,因为我在朋友函数中设置类成分的私有数据成员的值,并且朋友函数应该有权访问所有私有数据成员,对吗?

但我得到这个错误: ‘myIng’ was not declared in this scope 知道为什么会这样吗?

0 投票
3 回答
1735 浏览

c++ - 无法初始化友元函数运算符 <<

我遇到了朋友功能的问题。

我认为这是代码中唯一需要的部分。我的问题是这个函数。它说问题出在第一行,但我不知道这有多准确。

我收到错误:lab10.cpp:95: error: can't initialize friend function âoperator<<â

lab10.cpp:95:错误:朋友声明不在类定义中

提前致谢

0 投票
3 回答
687 浏览

c++ - 如何使用本地班级的好友功能?

由于可以在本地类中声明友元函数,如下例所示。如果在函数定义中定义了本地类的成员,而在它之外无法访问,那么它如何用于访问本地类的成员?

0 投票
4 回答
8585 浏览

c++ - 重载 operator<< 以输出对象成员而不使用友元函数

隔了很长一段时间后,我正在刷新 cpp,试图了解运算符重载方法。我试图重载“operator<<”以输出对象的成员。但如果不使用朋友功能,我就无法这样做。我正在寻找一种不使用朋友功能的方法。

这是我的班级定义:

功能实现

从主函数调用

现在我的问题是,我想在不使用朋友功能的情况下实现方法 1 类型的调用。但不知道,有没有可能在cpp中。我尝试了很少的实现,但都给了我编译错误。请帮助我理解我在这里遗漏的一点。

0 投票
2 回答
295 浏览

c++ - 当类写在命名空间内时如何使用友元函数

我已经在命名空间内创建了一个类,现在当我必须使用或调用命名空间时出现问题,编译器错误的可能原因是什么?

编译器错误 -

test1.cpp:在函数'void use_class()'中:
test1.cpp:17:6:错误:'void name1::show::accept_data()'是私有的
test1.cpp:31:16:错误:在此上下文中
test1.cpp:24:6: error: 'void name1::show::display_data()' is private
test1.cpp:32:17: error: 在这个上下文中

0 投票
4 回答
6949 浏览

c++ - 为什么要使用友元函数来定义比较运算符?

来自http://www.learncpp.com/cpp-tutorial/142-function-template-instances/

我们也可以像这样实现它:

使用第二种实现有什么缺点吗?

0 投票
2 回答
1103 浏览

c++ - Friend函数访问静态库中定义的类的私有成员

我有一个用 C++ 编写的静态库。我还获得了静态库中定义的类的头文件。

我可以访问在类声明中引入友元函数的静态库中定义的类的私有成员吗?