問題タブ [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 - どうして保護されたメソッドが無関係のクラスでアクセスできるのですか?
私はEclipseideで書かれた以下のコードを持っています:
ですHandle.methodHandle ()
がprotected
、匿名の内部class
メソッドの内部メソッドから呼び出すことができますか?なぜそれが起こっているのですか、私は何かが欠けていますか?Handle
との間の唯一の関係User
は、それらがimplement
同じであるということX
です。
c++ - プライベート型指定子は、オブジェクトが指定子を「理解」するのを妨げますか?
列挙型を戻り値の型として受け入れる関数を取得する際に問題がありました。以下のコードには、列挙型があります。
戻り値の型として Status を持つ関数:
ヘッダー コード:
最初に関連する関数の定義は次のように読み取られます。
私はこの答えを見つけました: return enum from function from function in C++ base classは、関数の最初の行を読む必要があることに気付くのに役立ちました:
しかし、ヘッダー コードの「型指定子がありません」というエラーが引き続き表示されます。'enum Status' 宣言をプライベート アクセス指定子の下に置くと違いが生じる可能性があることに気付いたので、それをヘッダー コードのパブリック アクセス指定子に移動しました。出来た!しかし、プライベートアクセス指定子の下で機能しない理由について、いくつかの説明が必要です。私が他の場所で見つけたものは次のとおりです。
クラスのオブジェクトは、プライベート データ メンバーにアクセスできません。
何が起こったのかについての私の解釈-プライベートアクセス指定子の下の列挙型定義では、関数(および最終的にその関数を呼び出すオブジェクト)はおそらく私の列挙型にアクセスできず、したがってそれをリターンタイプ。
しかし、もしそうなら、なぜ私は同じ問題でプライベート アクセス指定子の下で宣言された変数を返すことができるのでしょうか? それらの型は他の場所で既に理解されているためであり、プログラムはそれらを問題なく受け入れることができますか?
c - cでコンパイラが使用するアクセス指定子を知る方法
Cでコンパイラが使用するアクセス指定子を知る方法はありますか. たとえば、レジスター変数の場合、変数のアクセス指定子が auto か register かはすべてコンパイラーに依存します。コンパイラによって選択されたアクセス指定子を動的に知る方法はありますか??
c++ - 派生クラスの静的関数から基本クラスで保護されたメンバーにアクセスできますか?
dllといくつかのアプリケーションコードの間で共有される基本クラスを作成する必要があるプログラムがあります。次に、2つの異なる派生クラスがあります。1つはdllにあり、もう1つはメインアプリケーションにあります。これらのそれぞれには、naseクラスのデータを操作するいくつかの静的メンバー関数があります。(他の場所で関数ポインターとして使用されるように、静的である必要があります)。最も単純な形で、私の問題を以下に示します。
私のコンパイラは、DerivedがBaseへのアクセスを保護していても、pBaseの保護されたメンバーにアクセスできないと文句を言います。これを回避する方法はありますか、それとも私は何かを誤解していますか?Base変数をパブリックにすることはできますが、実際のインスタンスでは、これらは割り当てられたメモリの塊であり、マルチスレッドから保護するためのセマフォであるため、これは悪いことです。
ヘルプ?
c++ - エラー: 宣言が必要です
これまでのところ、DecisionTree.h
ファイルにあるのは
そしてVisual Studioはすでに強調表示されてpublic
おり、言っています
エラー: 宣言が必要です。
私は何が欠けていますか?
c++ - メソッドの保護レベルを変更することは良い習慣と考えられていますか?
言い換えれば、クラスがある場合
書いてもいいですか
または、このアプローチにはいくつかの欠点がありますか?
ruby - 「public/protected/private」メソッドはどのように実装され、どのようにエミュレートできますか?
ルビーでは、これを行うことができます:
ここで、f1 と f3 とパブリック、f2 と f4 はプライベートです。メソッド定義を変更するクラスメソッドを呼び出すことを可能にする内部で何が起こっているのでしょうか? どうすれば同じ機能を実装できますか (表向きはアノテーションのような独自の Java を作成するため)
例えば...
fun と notfun は、次の関数定義を変更します。
ありがとう
c++ - C++ でのクラス メンバーのプライバシーとヘッダー
だから私はD&Dでキャラクターを定義するクラスを作っています。クラスを設定する方法は、パブリックメンバーがヘッダーで定義され、.cpp でプライベートであるため、外部に公開されないということでした。これどうやってやるの?現在、このように見えますが、間違っていると確信しています。
character.h:
キャラクター.cpp:
はい、私はトンが欠けていることを知っていますが、それは重要ではありません. Visual Studio 2010 では、クラス ビューで character という名前の 2 つのクラスとして表示されます。意図したことを達成するにはどうすればよいですか? これは割り当てであり、とにかくすべてのコードが表示されるため、これは大した問題ではありませんが、将来的には、.h ファイルからプライベート メンバーを除外するのがおそらく賢明でしょうか?
ruby - Rubyで「プライベート」/「保護」と言うと実際に何が起こりますか?
Rubyクラス定義内でprivate
/が記述されている場合、実際には何が起こっていますか?protected
これらはキーワードではないため、メソッド呼び出しである必要がありますが、どこで定義されているかわかりません。それらは文書化されていないようです。private
/protected
メソッド(以下に表示)を宣言する2つの異なる方法は、異なる方法で実装されていますか?(2番目の方法は明らかにメソッド呼び出しですが、これは最初の方法ではそれほど明白ではありません。)
c++ - C++コンパイラによって自動的に提供される機能を禁止する
スコット・マイヤーズは彼の著書「Effective C ++」で、次のように述べています。
コンパイラによって自動的に提供される機能を禁止するには、対応するメンバー関数をprivateとして宣言し、実装を指定しません。その後、誰かが誤って呼び出した場合、リンク時にエラーが発生します。
スコットが説明しようとしていたことを達成するためのサンプルプログラムを書こうとしました。メンバー関数が宣言されpublic
、実装が与えられていない場合でも、同じことを達成できました。私の場合、別のオブジェクトからオブジェクトを初期化しようとしたときにもリンクエラーが発生しました。だから私はスコットが宣言されるメンバー関数の必要性を強調している理由を理解していませんprivate
か?
私のサンプルプログラムは以下のとおりです。
次のリンクエラーが発生します:
/tmp/ccXfqSqE.o(.text+0x135):関数
main': : undefined reference to
Unique :: Unique(Unique const&)'collect2:ldが1つの終了ステータスを返しました