タグ付けされた質問 「class」

一般的な状態と動作を説明する新しいオブジェクトを作成するためのテンプレート。CSSクラスと混同しないでください。代わりに[css]を使用してください。

7
Classオブジェクト(java.lang.Class)とは何ですか?
のJavaドキュメントはClass次のように述べています。 Classオブジェクトは、クラスがロードされるときにJava仮想マシンによって、およびdefineClassクラスローダーのメソッドの呼び出しによって自動的に構築されます。 これらのClassオブジェクトは何ですか?それらは、を呼び出すことによってクラスからインスタンス化されたオブジェクトと同じnewですか? また、たとえば、継承していなくても、object.getClass().getName()どのようにしてすべてをスーパークラスClassにタイプキャストできますjava.lang.Classか?

7
エラーを生成せずにPHP> = 5.3strictモードでオブジェクトにプロパティを追加する方法
これは単純なことですが、答えが見つからないようです。 $fooプロパティのない汎用stdClassオブジェクトがあります。$barまだ定義されていない新しいプロパティを追加したいと思います。私がこれを行う場合: $foo = new StdClass(); $foo->bar = '1234'; strictモードのPHPは文句を言います。 すでにインスタンス化されているオブジェクトにプロパティを追加するための適切な方法(クラス宣言以外)は何ですか? 注:ソリューションがstdClass型の汎用PHPオブジェクトで機能するようにしたい。 この問題に関する少しの背景。jsonオブジェクトの配列であるjson文字列をデコードしています。 json_decode()StdClassオブジェクトの配列を生成します。これらのオブジェクトを操作して、それぞれにプロパティを追加する必要があります。
82 php  class 

11
__init__の外部に新しい属性を作成しないようにする
で初期化されると__init__、新しい属性を受け入れないが、既存の属性の変更を受け入れるクラスを(Pythonで)作成できるようにしたい。これを行うには、ハックっぽい方法がいくつかあります。たとえば、次の__setattr__ような方法があります。 def __setattr__(self, attribute, value): if not attribute in self.__dict__: print "Cannot set %s" % attribute else: self.__dict__[attribute] = value 次に、__dict__内部__init__で直接編集しますが、これを行うための「適切な」方法があるかどうか疑問に思いました。

15
同じファイルに複数のクラスを含めるのは悪い習慣ですか?
以前は、1つのファイルに対して1つのクラスがありました。たとえば、car.csにはクラスcarがあります。しかし、もっと多くのクラスをプログラムするので、それらを同じファイルに追加したいと思います。たとえば、car.csにはクラスcarとdoorクラスなどがあります。 私の質問は、Java、C#、PHP、またはその他のプログラミング言語に適しています。同じファイルに複数のクラスを含めないようにする必要がありますか、それとも問題ありませんか?

9
整数のint値をインクリメントしますか?
Javaで整数の値をインクリメントするにはどうすればよいですか?intValueで値を取得でき、new Integer(int i)で設定できることはわかっています。 playerID.intValue()++; 動作しないようです。 注:PlayerIDは、次のもので作成された整数です。 Integer playerID = new Integer(1);
81 java  class  integer  int 

5
名前でクラスを取得する
アプリケーションにTestActivityというActivityクラスがある場合、次の例のように、そのクラスを名前で取得する方法はありますか? Class<?> c = getClassByName("TestActivity");
81 java  android  class 

2
TypeScriptのプライベートキーワードとプライベートフィールドの違いは何ですか?
TypeScript 3.8以降では、privateキーワードを使用してメンバーをプライベートとしてマークすることの違いは何ですか? class PrivateKeywordClass { private value = 1; } そしてJavaScriptのために提案された#プライベートフィールドを使用します: class PrivateFieldClass { #value = 1; } どちらを優先するべきですか?

4
テンプレート型の正しいコンストラクターを呼び出す方法は?
次のコードでは、コメント行をそのすぐ上の行と同じように機能させるにはどうすればよいですか? テンプレートの適切なコンストラクターを呼び出す汎用コードにしたいと思いTypeます。 #include <string> #include <iostream> template <typename Type> struct Class { Type data; Class(Type data) : data(data) { } }; int main() { Class<std::string> a = std::string("abc"); // Class<std::string> b = "abc"; std::cout << a.data << std::endl; return 0; }


1
空の基本クラスもメンバー変数であるときに、空の基本最適化が禁止されているのはなぜですか?
空のベース最適化は素晴らしいです。ただし、次の制限があります。 同じ基本型の2つの基本サブオブジェクトはオブジェクト表現内で異なるアドレスを持つ必要があるため、空の基本クラスの1つが最初の非静的データメンバーの型の型または基本でもある場合、空の基本最適化は禁止されています。最も派生したタイプの。 この制限を説明するには、次のコードを検討してください。static_assert失敗します。一方、どちらFooかBarを変更するか、代わりにから継承するBase2と、エラーが回避されます。 #include <cstddef> struct Base {}; struct Base2 {}; struct Foo : Base {}; struct Bar : Base { Foo foo; }; static_assert(offsetof(Bar,foo)==0,"Error!"); 私はこの振る舞いを完全に理解しています。私が理解していないのは、この特定の動作が存在する理由です。見落としではなく明示的な追加であるため、明らかに理由で追加されました。これの根拠は何ですか? 特に、2つの基本サブオブジェクトが異なるアドレスを持つ必要があるのはなぜですか?上記のBarはタイプでfooあり、そのタイプのメンバー変数です。Barの基本クラスがのタイプの基本クラスと関係がある理由foo、またはその逆の理由がわかりません。 実際、私はどちらかと言えば、それを含むインスタンス&fooのアドレスと同じであることを期待しBarます。他の状況で必要になるためです(1)。結局のところ、私はvirtual継承についてBase2特別なことは何もしていません。基本クラスは関係なく空であり、を使用したコンパイルは、この特定のケースでは何も壊れないことを示しています。 しかし、明らかにこの推論はどういうわけか間違っており、この制限が必要になる他の状況があります。 答えがC ++ 11以降であるとしましょう(私は現在C ++ 17を使用しています)。 (1)注:EBOはC ++ 11でアップグレードされ、特にに対して必須になりましたStandardLayoutType(ただしBar、上記でははではありませんStandardLayoutType)。

4
標準のデッキで見られるよりも複雑なトランプの種類のクラスを作る良い方法は?
私はオブジェクト指向プログラミングに非常に慣れていないので、単純なカードゲームを作ることでpythonでの学習を始めようとしています(伝統的なようです!)。私は正常に動作する次の例を実行し、PlayingCard()クラスのインスタンスを作成するためにクラスの複数のインスタンスを作成することについて教えてくれますDeck()。 class PlayingCard(object): def __init__(self, suit, val): self.suit = suit self.value = val def print_card(self): print("{} of {}".format(self.value, self.suit)) class Deck(object): def __init__(self): self.playingcards = [] self.build() def build(self): for s in ["Spades", "Clubs", "Diamonds", "Hearts"]: for v in range(1,14): self.playingcards.append(PlayingCard(s,v)) deck = Deck() 標準の52デッキだけではなく、より複雑なカードを使って何かを作りたいと思っています(値が適切に増加している)。私が念頭に置いているデッキはモノポリーカードゲームです。 カードには、ACTIONカード、PROPERTYカード、MONEYカードの3つの基本的なタイプがあります。アクションカードはさまざまなアクションを実行し、プロパティカードはさまざまなカラーセットに属し、マネーカードはさまざまな値を持つことができます。さらに、プロパティカードは「ワイルドカード」にすることができ、2つのセットのいずれかの一部として使用できます。最後に、すべてのカードには同等の金額値があります(各カードの上隅に示されています)。レントアクションカードでは、カードはカードに示されているカラープロパティにのみ適用できます。 私の質問は、一般的にこのような状況をどのように処理するかであり、クラスベースのpythonプログラムにこれらの異なるカードを含めるための良い方法は何でしょうか?私は単一のPlayingCard()クラスを保持し、のような多くの入力を保持する必要がありPlayingCard(type="PROPERTY", value="3M")ます。それともなど、別々のクラスを作成する方が良いだろうActionPlayingCard()、PropertyPlayingCard()などを?それとももっと良い方法がありますか?私が言うように、私はここで私の学習の初めであり、より高いレベルの設計の観点からこれらのタイプの状況を整理する方法。 どうもありがとう。

1
C#-オーバーライドされたメソッドの基本バージョンの呼び出し
基本クラスAと派生クラスがあるとしBます。 クラスにAは2つの関数があります:fun1()およびfun2()、はをfun1()呼び出しますfun2()。 クラスはandをBオーバーライドfun1()しfun2()、再度fun1()呼び出しますfun2()。 ただし、base.fun1()オーバーライドを呼び出しますfun2()。非常に不幸なループを作成する基本クラスのバージョンの代わりにbase.fun1()呼び出しfun2()を行うため: fun1() -> fun2() -> base.fun1() -> fun2() -> base.fun1() -> ... のbase.fun1()基本バージョンを強制的に呼び出す方法はありますfun2()か?本当の問題はおそらくこれらのクラスの設計が悪いことにあることは承知していますが、それがどういうわけか可能かどうか私はまだ興味があります。


2
テンプレートクラスの演算子+オーバーロードの戻り値の型
テンプレート化されたnumクラスを構築しようとしています。このクラスには、valタイプがのパブリック属性が必要Tです。これは、唯一のテンプレートパラメータです。さらに、値を提供する場合は、属性(val)をこの値で初期化する必要があります。これを行うには、次のコードを作成しました。 #include <iostream> template<class T> class Num { public: T val; Num():val(0) { std::cout<<"default constr used"<<std::endl; } Num(T value):val(value) {std::cout<<"constr (T value) used"<<std::endl; } ~Num() { std::cout<<"destructor used"<<std::endl; } template<typename U> Num operator+(const Num<U>& other) { return val+other.value; } }; さらにmain()、次のようなプログラムをテストする関数を作成しました。 int main() { std::cout << Num<int>(1) + Num<double>(2.0); return …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.