問題タブ [private-members]

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 投票する
10 に答える
3622 参照

language-agnostic - クラスのプライベートメンバーの目的

オブジェクト指向プログラミングでクラス/構造のプライベート/保護されたメンバーを持つ目的は何ですか?すべてのメンバーを公開することの害は何ですか?

0 投票する
3 に答える
912 参照

c++ - 派生クラス内にプライベート仮想関数を実装するにはどうすればよいですか?

プライベート仮想関数を使用する理由はわかっていますが、どのように正確に実装できますか?

例えば:

最初のバージョンは問題ありませんが、常に可能であるとは限りません。2番目のバージョンは単に名前を隠すのではありませんか?のクラス宣言内でそれを行うことができない場合、Base::func()のをどのように定義しますか?Derived2Dereived2

ありがとう

0 投票する
7 に答える
1455 参照

c# - (C#) 読み取り専用のプライベート コレクション メンバーを反復処理する

HashSet<String>プライベート メンバーとして2 つのコレクションを持つクラスがあります。私のコード内の他のクラスは、これらの HashSet を反復処理してその内容を読み取れるようにしたいと考えています。HashSet 自体への参照を公開せずに、 HashSetsmyClass.getHashSet().Clear(); の要素を繰り返しに公開する他の方法はありますか? for-each ループと互換性のある方法でこれを行うことができれば幸いです。

0 投票する
15 に答える
41449 参照

c - C構造体でメンバーを非表示にする

私はCでのOOPについて読んでいますが、C++のようにプライベートデータメンバーを作成できない方法が好きではありませんでした。しかし、2つの構造を作成できることに気づきました。1つはヘッダーファイルで定義され、もう1つはソースファイルで定義されます。

ここから、1つの構造を別の構造にキャストできます。これは悪い習慣と見なされますか?それとも頻繁に行われますか?

0 投票する
3 に答える
12011 参照

javascript - ExtJS を使用してクラスを拡張するときのプライベート メンバー

拡張クラス内のプライベート メソッドとフィールドに関するExtJS フォーラムでいくつかの調査を行いましたが、これに対する本当の答えは見つかりませんでした。

拡張クラスと言うときは、次のような意味です。

ここでの問題は、すべてが公開されていることです。では、 MyExtendedClassのスコープ内に、外部からはアクセスできないがパブリック メソッドからアクセスできる新しい変数 o メソッドを追加するにはどうすればよいでしょうか。

0 投票する
2 に答える
2978 参照

crash - UIViewController のプッシュとポップによる UINavigationController のクラッシュ

問題: UIWindow のサブビューとしての UINavigationController、rootViewController クラス、およびカスタム MyViewController クラスがあります。次の手順では、100% 再現可能な Exc_Bad_Access が取得されます。

左後ろの tapBarItem を 2 回押して (myViewController インスタンスを 2 つポップアウト)、rootViewController を表示します。

試行錯誤の苦痛な半日の後、私は最終的に答えを見つけますが、質問もします。

解決策: .h ファイルが煩雑になるのを避けるために、プライベート変数を宣言する怠惰な方法として、.m ファイルで多くのオブジェクトを宣言しました。例えば、

何らかの理由で、myViewController_2ndInstance のビューをロードした後、myViewController_1stInstance のビューがアンロードされる (ただしナビゲーション コントローラのスタック内にある) 場合、iPhone OS はこれらの「遅延プライベート」変数のメモリ割り当てを追跡できなくなる場合があります。myViewController_2ndInstance'view がまだロードされているため、最初に背面の tapBarItem をタップしても問題ありません。しかし、最初のインスタンスの割り当てを解除しようとしたため、背面の tapBarItem を 2 回タップすると地獄に落ちました。[可変解放] を呼び出したところ、ランダムにポイントされた (ルース ポインター) ため、Exc_Bad_Access になりました。

この問題を解決するには、変数 1 を .h ファイルで @private として宣言するだけです。

ここに私の質問があります: UINavigationController に関与するまで、私はかなり長い間「怠惰なプライベート」変数を問題なく使用してきました。これはiPhone OSのバグですか?それとも、Objective C についての根本的な誤解がありますか?

0 投票する
6 に答える
2113 参照

c++ - プライベートメンバーのハッキングは動作を定義していますか?

私は次のクラスを持っています:

これは外部ライブラリです (変更できません)。私は明らかに の値を変更することはできず、m_valueそれを読むだけです。から派生しても機能しBritneySpearsません。

次のクラスを定義するとどうなりますか。

そして、次のようにします。

私はこれが悪い習慣であることを知っています。しかし、好奇心から:これは動作することが保証されていますか? それは定義された動作ですか?

おまけの質問: こんな醜いハックを使わなければならなかったことはありますか?

編集: 怖がらせる人を少なくするため: 実際のコードで実際にこれを行うつもりはありません。ちょっと思ったんです ;)

0 投票する
2 に答える
1094 参照

iphone - iPhone 静的ライブラリ: インスタンス変数を非表示にする方法

次のガイドを使用して共有する静的ライブラリを作成しています: http://www.amateurinmotion.com/articles/2009/02/08/creating-a-static-library-for-iphone.html

関数の 1 つで、UIView のサブクラスであり、パブリック ヘッダーで定義されている「SomeUIView」を返しますが、パブリック ヘッダーで SomeUIView の内部インスタンス変数を公開したくありません。

SomeUIView のプライベート内部ヘッダー ファイルにカテゴリを使用しようとしましたが、「クラス 'SomeUIView' のインターフェイス宣言が重複しています」という問題が発生し続けます。

誰もこれを行う方法を知っていますか?

ありがとう!

0 投票する
1 に答える
440 参照

perl - どのような状況で、インスタンス変数は「フィールドの使用」で「_var」として宣言されますか?

アンダースコアが前に付いたフィールドに関して、文書化が不十分fieldsであるプラグマの動作を理解しようとしています。これは、ドキュメントがそれについて述べていることです:

アンダースコア文字で始まるフィールド名はクラス専用になり、サブクラスには表示されません。継承されたフィールドはオーバーライドできますが、-wスイッチと一緒に使用すると警告が生成されます。

以下の私のテストによると、これは実際の動作と一致していません。サブクラス内で-prefixedフィールドが表示されるだけでなく_、外部クラス内でも表示されます(「visible」の意味がわからない場合を除く)。また、制限されたハッシュに直接アクセスすることもできます。

fieldsソースコードにアクセスする以外に、プラグマの動作について詳しく知ることができますか?

0 投票する
1 に答える
912 参照

apache-flex - Flex:クラスのプライベート属性をどのようにリストしますか?

Flexで、プライベート属性を使用してオブジェクトをシリアル化しようとしています。

イントロスペクションAPIはそれを許可していないようです:「describeType()メソッドはパブリックメンバーのみを返します。このメソッドは、呼び出し元のスーパークラスまたは呼び出し元がインスタンスではない他のクラスのプライベートメンバーを返しません。」

インスタンスがそのプライベートメンバーの名前を知る別の方法はありますか?