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

c++ - C ++:授予对“通过”朋友类的私有运算符的访问权限,可能吗?

假设我已经定义了这两个类:

然后,在一个main.cpp文件中,我有这些行:

Node::operator=我的问题是:当且仅当左值是列表中的引用(它是 的朋友类)时,是否可以授予访问权限,Node即使main()不是朋友函数?

0 投票
0 回答
608 浏览

c++ - Friend 类在 C++ 中访问受保护的虚函数

我有三个类Class AClass BClass CClass BderivedClass A。一个protectedvirtual function声明 inclass A定义在Class B. C 类是 A 类的一个friend函数。现在我需要virtual function从 C 类调用它。当我尝试编译时,我得到的错误为cannot access protected member declared in class A.

不可能吗?

编辑:添加代码:

0 投票
2 回答
140 浏览

c++ - 嵌套命名空间不同层级的同名C++友元类

不确定这是否可能,但我在嵌套命名空间的不同级别中有两个同名的类,我想让更浅的类成为更深的类的朋友。例子:

在 File1.h 中:

在 File2.h 中:

这可能吗?如果是这样,正确的语法是什么?

0 投票
1 回答
58 浏览

c++ - 使用或不使用 new 在另一个类中创建一个类

我一直在用 C++ 解决一个问题,Dijkstra 算法。我已经使用邻接列表实现了它。

所以我有一个用于 anode的类、一个用于 a 的类minHeap和一个用于Graph.

我是否以minHeap这种方式定义类(没有友元函数)并在getDijkSP()函数中正常创建一个对象,这允许我仅在该函数中使用该对象?

(或)我是否minHeap使用友元函数定义类,以便可以minHeap使用 new 关键字创建类的对象?(这有助于我minHeap在类的范围内定义对象Graph,以便我可以在其所有功能中使用它来实现其他功能。)

我已经阅读了这篇文章和其他几篇文章,但特别想知道这两种方法对于此类类似问题的优缺点和适用性。

为了更清楚起见,我提供了类的构造函数。

0 投票
1 回答
1584 浏览

c++ - C ++详细命名空间vs匿名vs私有方法到类vs.pimpl vs.朋友类

在这里忍受我。我试图弄清楚你在什么时候画出关于将辅助方法放入 anon、detail 命名空间、私有和创建 pimpl 或朋友类的界限。

这是我的看法。请让我知道你的想法。

所以,如果我有 foo.hpp foo.cpp

而且我有一些bar不访问任何数据成员的免费功能,foo而且没有客户端需要知道这些免费功能,只有foo.cpp's 的方法需要它们,只需将它们直接放在 foo.cpp 的 anon 命名空间中即可完成。

但是,如果bar需要访问 foo 的数据成员,我们可以创建 foo 的bar私有方法。但这意味着即使 foo 的客户端并不真正关心bar,但每次bar更改时,我们都会重新编译。

(这部分我有点模糊):但是,至少在这种情况下使用详细名称空间,可以帮助 foo.hpp 的读者不必费心去看bar,因为他们真的不需要知道它。这是详细命名空间约定的一般用例吗?

现在,如果我们有一堆 bar_1、bar_2...bar_n 并且它们相互关联并且它们需要访问数据成员,我可以baz为 foo 创建一个朋友类,并将bars 放在那里。

但是,如果我真的很担心编译时间和隐藏界面,我可以求助于 pimpl(这部分再次非常模糊,通常如果我看到这个,警报会响起并告诉我设计中有问题)。

你的意见...

0 投票
2 回答
10262 浏览

javascript - TypeScript 中的朋友类

在 C++ 中有一种叫做友元类的东西。据我所知,TypeScript/JavaScript 中没有这样的东西。有没有办法在 TypeScript/JavaScript 中模拟朋友类的这种行为?

为了提供更好的背景(如果需要)我为什么以及我尝试做什么,我制作了一些小游戏来娱乐(和学习东西)并尝试这样。目前我只使用公共方法并且一切正常,但我想将这些方法的可访问性限制为仅另一个类。如果有帮助,我会使用 TypeScript。

0 投票
1 回答
125 浏览

c++ - 友元类和重载运算符

首先,这是出于学术目的。我非常沮丧,我什至已经和朋友一起解决了半天。

我们正在与重载的运算符和朋友类一起工作,这个实验室让我觉得自己像个彻头彻尾的白痴。我将在下面发布重要的代码,但整个项目将在帖子底部的一个 zip 文件中。我确定它充满了错误,现在它拒绝保存我的一些代码(它不断抛出异常)。

这是我的小学班级的头文件代码

似乎不喜欢我尝试将 NumDays 对象传递给 Overtime 类构造函数,但据我了解,这应该是它应该如何工作的,因为加班对象是用每个 NumDays 对象构造的

第二个问题是重载的运算符,我在解决这个问题时遇到的麻烦更少,而在为什么必须如此具体地实现它时遇到的麻烦更大。

这是重载运算符的代码

它绝对不是 << 重载的粉丝,但我基本上直接从我的书中复制代码来尝试这样做。

原始代码链接已损坏,这是一个永久链接。http://www.mediafire.com/file/j4q3fln9a8p98ll/dayCounter.zip

也有点修正了我的代码。不能完美地工作,但它确实可以编译并且大部分都可以工作。http://www.mediafire.com/file/g5m21drbuab8tso/Lab5workCounter.zip

0 投票
1 回答
2902 浏览

c++ - 无法访问在类中声明的私有成员,甚至无法访问声明的朋友类

我有两节课:

第二类:

在主要功能中,我这样做了:

然后它说:

错误 C2248:“CALLDB::numCalls”:无法访问在类“CALLDB”中声明的私有成员

为什么会这样?我的朋友类声明有问题吗?

0 投票
2 回答
37 浏览

c++ - 通过基类中的虚拟调用访问派生类中的函数

阅读加速 c++的第 13 章时,我想到了这个问题。

这个问题涉及三个类,例如 class Core、 classGrade和 class Student_InfoCore是基类。Grade是继承自的派生类CoreStudent_info是句柄类。

为了定义复制构造函数Student_info,我们需要在类中创建一个虚clone函数,Core并且我们还需要在类中重新定义它Grade。这两个功能都在protected标签下。要访问 的受保护clone函数Core,句柄类Student_Info必须指定为 的朋友类Core

但是,它说我们不需要提名Student_Info为朋友Grade来访问它的克隆功能,因为我们只能通过虚拟调用来访问它Core::clone。我真的很困惑。我不知道如何Student_Info访问Grade's 的clone功能。如果 cp (类型Core*)指向 class 的对象Grade,为什么可以s.cp->clone()工作?有人可以给我详细说明吗?

代码的相关部分:

0 投票
1 回答
264 浏览

c++ - 朋友类可以从 C++ 中的朋友类创建对象吗?

这些是我的两个 C++ 头文件中的代码,我在其中声明了两个类,一个是另一个类的朋友:

==>第一个类创建一个哈希表并用给定文件中的单词填充它。

在第二个类中,我想从第一个类创建一个对象并对其进行操作,首先填充创建的对象内的哈希表,然后删除所有被认为重复的单词(如果 Levenshtein 距离接近某个比例) .

问题是当我编译代码时出现错误:([Error] 'Hash_class' does not name a type)如果可能的话,请告诉我如何或一些我可以了解它的来源。如果不可能,那么一些提示将是一件好事,谢谢。

(“我使用 GCC 4.3.2”)