问题标签 [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.
java - 如何在不相关的类中访问受保护的方法?
我有以下用 Eclipse ide 编写的代码:
即使Handle.methodHandle ()
是protected
,它仍然可以从匿名内部class
方法的内部方法调用?为什么会这样,我错过了什么吗?Handle
和之间的唯一关系User
是它们是implement
相同的X
。
c++ - 私有类型说明符是否会阻止对象“理解”说明符?
我在获取一个接受枚举作为返回类型的函数时遇到了问题。在下面的代码中有一个枚举:
以及一个以 Status 作为返回类型的函数:
标头代码:
最初相关的函数定义为:
我找到了这个答案:从 C++ 基类中的函数返回枚举,这帮助我意识到我真的需要读取函数的第一行:
但是,我的标头代码仍然收到“缺少类型说明符”错误。我意识到在私有访问说明符下拥有我的“枚举状态”声明可能会有所不同,因此我将其移至我的标头代码中的公共访问说明符。有效!但我想解释一下为什么它在私有访问说明符下不起作用。我设法在其他地方找到的是:
类的对象不能访问私有数据成员。
我对发生的事情的解释是——使用私有访问说明符下的枚举类型定义,函数(以及最终调用该函数的对象)不可能访问“理解”我的枚举类型,因此接受它作为返回类型。
但是 - 如果是这样的话,为什么我可以返回在私有访问说明符下声明的变量,但存在同样的问题?是不是因为它们的类型在其他地方已经被理解了,所以程序接受它们没有问题?
c - 如何知道编译器在c中使用的访问说明符
有没有办法知道编译器在 c 中使用的访问说明符。例如 - 在寄存器变量的情况下,这完全取决于编译器来决定变量的访问说明符是自动还是寄存器。有没有办法动态知道编译器选择了什么访问说明符?
c++ - 我可以从派生类中的静态函数访问受保护的基类成员吗?
我有一个程序,我需要在其中创建一个在 dll 和一些应用程序代码之间共享的基类。然后我有两个不同的派生类,一个在 dll 中,一个在主应用程序中。它们中的每一个都有一些静态成员函数,它们对 nase 类中的数据进行操作。(它们需要是静态的,因为在其他地方用作函数指针)。我的问题最简单的形式如下所示。
我的编译器抱怨我无法访问 pBase 的受保护成员,即使 Derived 已保护对 Base 的访问。有什么办法可以解决这个问题还是我误解了什么?我可以公开 Base 变量,但这会很糟糕,因为在我的真实实例中,这些是分配的内存块和用于保护它以进行多线程处理的信号量。
帮助?
c++ - 错误:期望声明
到目前为止,我的DecisionTree.h
文件中只有
并且 Visual Studio 已经在强调public
和说
错误:需要声明。
我错过了什么?
c++ - 更改方法的保护级别是否被认为是良好做法?
换句话说,如果我有课
可以写吗
还是这种方法有一些缺点?
ruby - “public/protected/private”方法是如何实现的,我该如何模拟它?
在红宝石中,您可以这样做:
现在 f1 和 f3 是公共的,f2 和 f4 是私有的。内部发生了什么允许您调用类方法然后更改方法定义?我怎样才能实现相同的功能(表面上是为了创建我自己的 java 类注解)
例如...
并且 fun 和 notfun 会更改以下函数定义。
谢谢
c++ - C++ 中的类成员隐私和标头
所以我正在创建一个类来定义 D&D 中的角色。我认为设置类的方式是公共成员在标题中定义,在 .cpp 中定义为私有成员,因此它们不会向外界透露,对吗?你怎么做到这一点?目前它看起来像这样,我确定这是错误的。
字符.h:
字符.cpp:
是的,我知道有很多东西不见了,但这不是重点。Visual Studio 2010 在类视图中将其显示为 2 个名为 character 的类。我如何完成我的意图?这无关紧要,因为它是一项任务,并且所有代码无论如何都是可见的,但是对于未来,将私有成员排除在 .h 文件之外可能是明智之举吗?
ruby - 在 Ruby 中声明“私有”/“受保护”时实际发生了什么?
当private
/protected
在 Ruby 类定义中声明时实际发生了什么?它们不是关键字,因此这意味着它们必须是方法调用,但我找不到它们的定义位置。它们似乎没有记录在案。两种不同的声明private
/protected
方法(如下所示)的实现方式是否不同?(第二种方式显然是方法调用,但在第一种方式中并不那么明显。)
c++ - 禁止 C++ 编译器自动提供的功能
Scott Meyers 在他的《Effective C++》一书中说,
要禁止编译器自动提供的功能,请将相应的成员函数声明为私有并且不提供任何实现。然后,如果有人无意中调用了一个,他们将在链接时收到错误。
我试图编写一个示例程序来实现 Scott 试图解释的内容。即使声明了成员函数public
并且没有给出实现,我也可以实现相同的目标。当我尝试从另一个对象初始化一个对象时,也发生了链接错误。所以我不明白为什么 Scott 强调需要声明成员函数private
?
我的示例程序写在下面:
我收到以下链接错误:
/tmp/ccXfqSqE.o(.text+0x135): 在函数
main': : undefined reference to
Unique::Unique(Unique const&)' collect2: ld 返回 1 退出状态