タグ付けされた質問 「private-members」


25
プロトタイプ定義関数からプライベートメンバー変数にアクセスする
「プライベート」変数(コンストラクターで定義されたもの)をプロトタイプ定義のメソッドで使用できるようにする方法はありますか? TestClass = function(){ var privateField = "hello"; this.nonProtoHello = function(){alert(privateField)}; }; TestClass.prototype.prototypeHello = function(){alert(privateField)}; これは機能します: t.nonProtoHello() しかし、これはしません: t.prototypeHello() 私はコンストラクター内で自分のメソッドを定義することに慣れていますが、いくつかの理由でそれから離れています。

10
外部Javaクラスが内部クラスのプライベートメンバーにアクセスできるのはなぜですか?
外部クラスが内部クラスのプライベートインスタンス変数にアクセスできることを確認しました。これはどのようにして可能ですか?以下は、同じことを示すサンプルコードです。 class ABC{ class XYZ{ private int x=10; } public static void main(String... args){ ABC.XYZ xx = new ABC().new XYZ(); System.out.println("Hello :: "+xx.x); ///Why is this allowed?? } } この動作が許可されるのはなぜですか?

10
プライベートフィールドがインスタンスではなく型に対してプライベートであるのはなぜですか?
C#(および他の多くの言語)では、同じタイプの他のインスタンスのプライベートフィールドにアクセスすることは完全に正当です。例えば: public class Foo { private bool aBool; public void DoBar(Foo anotherFoo) { if (anotherFoo.aBool) ... } } ようにC#の仕様(セクション3.5.1、3.5.2)プライベートフィールドへのアクセスのタイプではなく、インスタンス上で述べています。私はこれについて同僚と話し合っており、(同じインスタンスへのアクセスを制限するのではなく)このように機能する理由を考え出そうとしています。 考えられる最良の引数は、クラスがプライベートフィールドにアクセスして別のインスタンスとの等価性を判断する可能性がある等価性チェックです。他に理由はありますか?それとも、このように機能しなければならない、または何かが完全に不可能であることを絶対に意味するいくつかの黄金の理由?

4
プライベートタイプでautoを使用できるのはなぜですか?
次のコードがコンパイルされて実行されることになんとなく驚いた(vc2012&gcc4.7.2) class Foo { struct Bar { int i; }; public: Bar Baz() { return Bar(); } }; int main() { Foo f; // Foo::Bar b = f.Baz(); // error auto b = f.Baz(); // ok std::cout << b.i; } このコードが正常にコンパイルされることは正しいですか?そして、なぜそれが正しいのですか?auto名前を(期待どおり)使用できないのに、プライベートタイプで使用できるのはなぜですか?


7
同じクラスのオブジェクトがお互いのプライベートデータにアクセスするのはなぜですか?
同じクラスのオブジェクトがお互いのプライベートデータにアクセスするのはなぜですか? class TrivialClass { public: TrivialClass(const std::string& data) : mData(data) {}; const std::string& getData(const TrivialClass& rhs) const { return rhs.mData; }; private: std::string mData; }; int main() { TrivialClass a("fish"); TrivialClass b("heads"); std::cout << "b via a = " << a.getData(b) << std::endl; return 0; } このコードは機能します。オブジェクトaがオブジェクトbのプライベートデータにアクセスして返すことは完全に可能です。なぜそうなのでしょうか?個人データは個人のものだと思います。(私はpimplイディオムのコピーコンストラクターを理解することから始めましたが、この単純な状況さえ理解していないことがわかりました。)

11
CoffeeScriptのプライベートメンバー?
CoffeeScriptで非静的なプライベートメンバーを作成する方法を知っている人はいますか?現在、私はこれを行っています。これは、アンダースコアで始まるパブリック変数を使用して、クラス外で使用してはならないことを明確にしています。 class Thing extends EventEmitter constructor: (@_name) -> getName: -> @_name 変数をクラスに入れると静的メンバーになりますが、どうすれば非静的にすることができますか?「ファンシー」にならずにそれも可能ですか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.