問題タブ [static-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.
c++ - 静的 std::map クラス メンバー変数を埋めるときの競合する宣言
char
s をカスタム type にマップする静的 std::map メンバー変数を持つクラスがありますTerrain
。このマップをクラスの実装ファイルに入力しようとしていますが、いくつかのエラーが発生します。これが私のヘッダーファイルです:
ここに私の実装ファイルがあります:
g++ を使用していますが、エラーは次のとおりです。
src/Level.cpp:15: エラー: 競合する宣言 'std::map, std::allocator > > yarl::level::Level::terrainTypes [46]'<br> src/Level.hpp:104: エラー: 'yarl::level::Level::terrainTypes' には、'std::map, std::allocator > > yarl::level::Level::terrainTypes'<br> src/Level.cpp: としての以前の宣言があります。 15: エラー: クラス外の 'std::map, std::allocator > > yarl::level::Level::terrainTypes' の宣言は定義ではありません
src/Level.cpp:15: エラー: 'yarl からの変換: :level::Terrain' から非スカラー型 'std::map, std::allocator > >' が
src/Level.cpp:15 を要求しました: エラー: 'yarl::level::Level::terrainTypes' を初期化できません宣言時に非定数式によって
実装ファイルのマップ割り当て行ごとにこれらのセットを取得します。誰かが私が間違っていることを見ていますか? ご協力いただきありがとうございます。
php - PHP で静的メンバーを初期化する
なぜこれが不可能なのですか?
こんな風に使えるようになりたい
..クラスをインスタンス化せずに。どうすればいいですか?
更新:わかりました。WHY の部分は理解しました。誰かがHOW部分を説明できますか? ありがとう :)
c++ - 静的クラス情報の継承と保存
Lua を使って何かをセットアップしようとしていますが、Lua の詳細は私の質問にとって重要ではありません。
私ができるようにしたいのは、関数を呼び出してOpenLib<T>(L)
、特定のクラスのテーブル名 (およびそのテーブル) を取得し、Lua に登録することです。それは本質的にこれに要約されます:
私はこれをいくつかの異なる方法で試しましたが、正しく動作させることができません。次のように myTable と myTableName を含む基本クラスを作成してみました。
次に、LuaInfo から継承して、必要な情報を入力します。LuaInfo から継承するすべてのクラスが同じ情報を取得するため、これはうまくいきませんでした。
class Widget : public LuaInfo を実行する必要があるため、初期化する構文が少しばかげていましたが、動作に近づいていました。
これを正しくするためにいくつかのバリエーションを試しましたが、次のようなエラーが発生し続けます
私がやりたいことは可能ですか?もしそうなら、それを行う正しい方法は何ですか?
c++ - テンプレートのインスタンス化間で静的メンバーを共有しますか?(無理だよ?)
私はおそらくばかげたことをしているが、それがうまくいったらいいのにと思う。
本質的にグローバルな(ただし、理想的にはクラス変数としてカプセル化された)独自のルックアップ構造が必要な方法で型を特殊化しようとしていますが、オブジェクトを型に対して安全にしたいので、パラメーター化されています。
その結果、私は本質的に
どういうわけか、lookupTableを初期化するときまで、私はそうは思いませんでした。
lookupTable
のさまざまなインスタンス化に関連付けられて、さまざまなが実行されますSpecialArray
。
それは単なる夢のようなものであり、正解はそれを別個のグローバルシングルトンオブジェクトにすることだと思いますが、とにかくlookupTable
、すべてのオブジェクトに対して1つだけになるようにすることはできSpecialArray
ますか?
たとえば、私の頭の中のC ++(実際のC ++ではありません)では、これは次のようになります。
...しかし悲しいことに、GCCは私の心の中でC++をコンパイルしません
私が欲しいものを手に入れる実際の方法はありますか(C ++ 0x-landか何かのどこか)?このルックアップテーブルを操作するいくつかの静的メソッド(タイプまたはNを追跡しない)でも、この問題が発生する可能性があります。
...それが意味をなさなかった場合は申し訳ありません。
あなたがレンダリングすることができるどんな助けまたは同情にも前もって感謝します。
f# - F#のメンバーパラメーターとしてのSeqseqタイプ
このコードが機能しないのはなぜですか?
次のエラーが発生します。
c# - C# でグローバル オブジェクトに静的クラスを使用する
粒子のリストを使用しています。
通常、このリストをシミュレーション クラスに配置します。粒子の位置、速度、およびその他のプロパティを計算します。
他のいくつかのクラスでは、出力および後処理のためにこのパーティクル データが必要です。
静的クラスを作成してもよろしいですか。
他のクラスから粒子データにアクセスするには?
c++ - テンプレート化されたクラスでの静的ポインターの初期化
次のようなクラスを考えてみましょう:
そのポインター オブジェクトを正常に作成できない理由がわかりません。
上記のコードはすべてヘッダーで指定されており、私が言及した問題はリンク手順のエラーであるため、特定のシンボルが見つかりません。
c# - 静的クラスに特定のメソッドを実装させる方法は?
静的クラスのセットを作成する必要があり、それらすべてが同じメソッドを実装する必要があります。私はそれらを強制する方法を見つけたいと思います。
静的クラスはSystem.Object以外のものを派生させることができないことを理解しています。これには非静的メソッドを使用する必要がありますか?可能性はありますが、このクラスのどのメソッドもインスタンスプロパティを使用しません...
私のベストショットは、シングルトンを使用することです。次にインスタンスを使用しますが、少なくとも、メソッドを使用する必要があるたびにクラスをインスタンス化する必要はありません。
あなたが提案する代替案は何ですか?
編集:
これらのメソッドは実装しません。他の開発者に特定のシグネチャを使用して特定のメソッドを実装するように強制する必要があります。すべての署名は、すべてのクラスで同じです。それでおしまい。
オフィスのデータベースからレコードを取得する静的クラスがあるとします。それを行うにはいくつかの方法があります。これらのメソッドはいずれも変数を共有しないため、静的としてマークされ、クラスも静的としてマークされます。
さて、あなたとあなたのチームの他の開発者は、他のデータベースやあなたのコントロール外のAPIに対しても同じことをしなければなりません、それは問題ではありません。同僚に、同じ署名を持つまったく同じメソッドでこれらのクラスをすべて実装するように強制したいとします。
あなたのコメントはいつでも歓迎ですが、今私はこれを行うための最も近い方法を見つけたいと思っています。
他のすべてが継承する抽象クラスを使用できます。ただし、これらのメソッドは何も共有しないため、必要になるたびにクラスをインスタンス化したくないと思います。
そのため、シングルトンパターンの使用について説明しました。私はそれをすべきではありませんか?
c++ - 静的メソッド/メンバーを使用しようとしています
私はここ数年C#コーディングに甘んじてきましたが、今はC ++に戻って、単純なはずの問題に問題があることに気づきました。DarkGDK(dbのプレフィックスが付いたコマンド)と呼ばれるgamedev用のサードパーティライブラリを使用していますが、DGDKは問題ではありません。
これが私のコードです:
System.h
System.cpp
ここでの考え方は、文字列を整数値に対してマップするマップを作成し、ハードコードされた値の代わりに文字列を使用して画像にアクセスすることです。このクラスは実行されないため、画像のアンロードなどは処理されません。Systemのインスタンスを渡さずに画像メソッドにアクセスしたいので、staticを使用しました。
今、私はこのエラーを受け取ります:
blahblah \ system.cpp(39):エラーC2677:バイナリ'[':タイプ'std :: string'をとるグローバル演算子が見つかりません(または受け入れ可能な変換がありません)
マップを静的に変更すると、次のリンカーエラーが発生します。
1> System.obj:エラーLNK2001:未解決の外部シンボル "プライベート:静的クラスstd :: map、class std :: allocator>、int、struct std :: less、class std :: allocator >>、class std :: allocator 、class std :: allocator> const、int >>> System :: m_images "(?m_images @ System @@ 0V?$ map @ V?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ HU?$ less @ V?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@@ 2 @ V?$ allocator @ U ?$ pair @ $$ CBV?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ H @ std @@@ 2 @@ std @@ A)
明るいチャップスの誰かが私を助けてくれますか?
c# - 静的メソッドでキーワード「this」を使用できないのはなぜですか?
this
静的メソッドでキーワードを使用できないのはなぜですか? なぜ C# でこの制約が定義されているのか疑問に思っています。この制約によって得られるメリットは何ですか?
[更新]: 実は、これはインタビューで受けた質問です。あなたのすべての回答に基づいて、「静的」と「これ」の使用法を知っています.2つを一緒に使用できない理由を少し知っていると思います. つまり、静的メソッドは状態を変更したり、型レベルで何かをしたりするために使用されますが、「this」を使用する必要がある場合は、状態を変更したり、インスタンス レベルで何かをしたいということです。型の状態変化とインスタンスの状態変化を区別するために、c# では静的メソッドで「this」を使用できません。私は正しいですか?