问题标签 [access-specifier]

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 投票
3 回答
1010 浏览

java - 如何在不相关的类中访问受保护的方法?

我有以下用 Eclipse ide 编写的代码:

即使Handle.methodHandle ()protected,它仍然可以从匿名内部class方法的内部方法调用?为什么会这样,我错过了什么吗?Handle和之间的唯一关系User是它们是implement相同的X

0 投票
2 回答
1690 浏览

c++ - 私有类型说明符是否会阻止对象“理解”说明符?

我在获取一个接受枚举作为返回类型的函数时遇到了问题。在下面的代码中有一个枚举:

以及一个以 Status 作为返回类型的函数:

标头代码:

最初相关的函数定义为:

我找到了这个答案:从 C++ 基类中的函数返回枚举,这帮助我意识到我真的需要读取函数的第一行:

但是,我的标头代码仍然收到“缺少类型说明符”错误。我意识到在私有访问说明符下拥有我的“枚举状态”声明可能会有所不同,因此我将其移至我的标头代码中的公共访问说明符。有效!但我想解释一下为什么它在私有访问说明符下不起作用。我设法在其他地方找到的是:

类的对象不能访问私有数据成员。

我对发生的事情的解释是——使用私有访问说明符下的枚举类型定义,函数(以及最终调用该函数的对象)不可能访问“理解”我的枚举类型,因此接受它作为返回类型。

但是 - 如果是这样的话,为什么我可以返回在私有访问说明符下声明的变量,但存在同样的问题?是不是因为它们的类型在其他地方已经被理解了,所以程序接受它们没有问题?

0 投票
3 回答
193 浏览

c - 如何知道编译器在c中使用的访问说明符

有没有办法知道编译器在 c 中使用的访问说明符。例如 - 在寄存器变量的情况下,这完全取决于编译器来决定变量的访问说明符是自动还是寄存器。有没有办法动态知道编译器选择了什么访问说明符?

0 投票
2 回答
7784 浏览

c++ - 我可以从派生类中的静态函数访问受保护的基类成员吗?

我有一个程序,我需要在其中创建一个在 dll 和一些应用程序代码之间共享的基类。然后我有两个不同的派生类,一个在 dll 中,一个在主应用程序中。它们中的每一个都有一些静态成员函数,它们对 nase 类中的数据进行操作。(它们需要是静态的,因为在其他地方用作函数指针)。我的问题最简单的形式如下所示。

我的编译器抱怨我无法访问 pBase 的受保护成员,即使 Derived 已保护对 Base 的访问。有什么办法可以解决这个问题还是我误解了什么?我可以公开 Base 变量,但这会很糟糕,因为在我的真实实例中,这些是分配的内存块和用于保护它以进行多线程处理的信号量。

帮助?

0 投票
2 回答
29926 浏览

c++ - 错误:期望声明

到目前为止,我的DecisionTree.h文件中只有

并且 Visual Studio 已经在强调public和说

错误:需要声明。

我错过了什么?

0 投票
4 回答
247 浏览

c++ - 更改方法的保护级别是否被认为是良好做法?

换句话说,如果我有课

可以写吗

还是这种方法有一些缺点?

0 投票
3 回答
331 浏览

ruby - “public/protected/private”方法是如何实现的,我该如何模拟它?

在红宝石中,您可以这样做:

现在 f1 和 f3 是公共的,f2 和 f4 是私有的。内部发生了什么允许您调用类方法然后更改方法定义?我怎样才能实现相同的功能(表面上是为了创建我自己的 java 类注解)

例如...

并且 fun 和 notfun 会更改以下函数定义。

谢谢

0 投票
3 回答
714 浏览

c++ - C++ 中的类成员隐私和标头

所以我正在创建一个类来定义 D&D 中的角色。我认为设置类的方式是公共成员在标题中定义,在 .cpp 中定义为私有成员,因此它们不会向外界透露,对吗?你怎么做到这一点?目前它看起来像这样,我确定这是错误的。

字符.h:

字符.cpp:

是的,我知道有很多东西不见了,但这不是重点。Visual Studio 2010 在类视图中将其显示为 2 个名为 character 的类。我如何完成我的意图?这无关紧要,因为它是一项任务,并且所有代码无论如何都是可见的,但是对于未来,将私有成员排除在 .h 文件之外可能是明智之举吗?

0 投票
2 回答
1492 浏览

ruby - 在 Ruby 中声明“私有”/“受保护”时实际发生了什么?

private/protected在 Ruby 类定义中声明时实际发生了什么?它们不是关键字,因此这意味着它们必须是方法调用,但我找不到它们的定义位置。它们似乎没有记录在案。两种不同的声明private/protected方法(如下所示)的实现方式是否不同?(第二种方式显然是方法调用,但在第一种方式中并不那么明显。)

0 投票
3 回答
194 浏览

c++ - 禁止 C++ 编译器自动提供的功能

Scott Meyers 在他的《Effective C++》一书中说,

要禁止编译器自动提供的功能,请将相应的成员函数声明为私有并且不提供任何实现。然后,如果有人无意中调用了一个,他们将在链接时收到错误。

我试图编写一个示例程序来实现 Scott 试图解释的内容。即使声明了成员函数public并且没有给出实现,我也可以实现相同的目标。当我尝试从另一个对象初始化一个对象时,也发生了链接错误。所以我不明白为什么 Scott 强调需要声明成员函数private

我的示例程序写在下面:

我收到以下链接错误:

/tmp/ccXfqSqE.o(.text+0x135): 在函数main': : undefined reference toUnique::Unique(Unique const&)' collect2: ld 返回 1 退出状态