問題タブ [cyclic-dependency]

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

c - Cで2つの信頼できる構造体を定義しようとしています

2番目の構造体が最初の構造体を配列メンバーとして使用し、それ自体に2つのポインターメンバーがある場合、Cで2つの構造体を定義しようとしています。

Visual Studioは私のコードが好きではありません:

構文エラー:'}'
構文エラー:識別子'tokenListNode'
構文エラー:'*'の前に'{'がありません

これを解決する方法はありますか?

->エラーは、コードの先頭に追加した宣言の有無にかかわらず表示されることに注意してください。

->また、構造体の中括弧の前後の識別子の違いを誰かに説明してもらえれば幸いです。

以下はコードです:

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

c++ - 循環依存クラスのメンバー メソッドの呼び出し

シミュレーションプログラムをセットアップしようとしています。シミュレーションはいくつかのステップで実行され、シミュレーション クラスはさまざまなクラスの ::step() を呼び出す必要があります。そのうちの 1 つが _experiment クラスです。

実験クラスにはシミュレーションクラスが必要であり、シミュレーションクラスは実験クラスが何であるかを知る必要があるため、これを機能させることができません。したがって、それらは循環依存です。前方宣言を使用して解決しようとしましたが、前方宣言されたクラスのメソッドにアクセスできません。それでは、前方宣言のポイントは何ですか?誰でも私を助けることができますか?ありがとう!

main.cpp

実験.cpp:

実験.h:

シミュレーション.cpp:

シミュレーション.h:

0 投票する
16 に答える
120832 参照

node.js - Node.jsで循環依存を処理する方法

私は最近nodejsを使用していますが、まだモジュールシステムを理解しているので、これが明らかな質問である場合はお詫びします。以下のようなコードが必要です。

a.js(ノードで実行されるメインファイル)

b.js

私の問題は、ClassBのインスタンス内からClassAのインスタンスにアクセスできないことのようです。

私が望むものを達成するためにモジュールを構造化する正しい/より良い方法はありますか?モジュール間で変数を共有するためのより良い方法はありますか?

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

c++ - テンプレートの循環依存を解決する

Boost を使用して Node というクラスのポインターのフィボナッチ ヒープを実装しようとしています。

ここまでは順調ですね。しかし、ヒープ要素のハンドルも Node クラスに格納したいと考えています。Boostは、「ハンドルはvalue_type内に格納できる」と具体的に述べています。Boost ただし、クラス内で比較演算子を定義することはできません。ヒープはそれを使用せず、ポインター値のみを比較するためです。

ただし、テンプレート パラメーターとして fibonacci_heap に渡される比較構造体を定義すると、循環依存が導入されます。

Node は HeapHandle に依存し、HeapHandle は Node に依存します。

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

java - JAVA/JNI - 循環依存関係を持つネイティブ DLL をロードする

JNI を使用して Java プロジェクトに C++ コードをロードしようとしています。ロードするDLLがいくつかありますが、残念ながら、そのうちの2つの間に循環依存関係があります.dll Aにはdll Bが必要で、dll Aが必要です! DLL 間で循環的な依存関係を持つのはプログラミング設計として不適切であることはわかっていますが、私のプロジェクトでは、C++ コードはブラック ボックスです。

循環依存関係を持つ DLL をロードする方法はありますか?

私のコードは非常に単純です:

Java ライブラリ パスは問題なく、2 つの DLL が含まれています (VM 引数として指定されているので、実行時にダンプしてチェックしました)。循環依存関係は Dependency Walker によって確認されました。

エラーは次のとおりです。

私のプロジェクトは、Tomcat 6 サーバーにデプロイされた動的 Web プロジェクトとして Eclipse (Helios) で開発されています。

0 投票する
4 に答える
2637 参照

c++ - C++ クラスが相互に依存し、循環依存エラーが発生する

私の調査により、私が経験している問題は巡回冗長と呼ばれていると信じるに至りました。投稿されている解決策がわかりません。私は (かなり) C++ の初心者であり、Java のバックグラウンドが豊富です。

基本的に、互いに依存する 2 つのクラスがあります。クラス A にはクラス B オブジェクトのベクトルが含まれ、クラス B にはクラス A オブジェクトを入力として必要とするメソッドが含まれます。

問題を再現するコードを次に示します。

codelite g++ によると、エラーは school.h にあり、「このスコープで人が宣言されていません」です。また、「テンプレート引数 1 が無効です」および「テンプレート引数番号 2 が無効です」とも表示されます。次に、呼び出されるすべてのベクトル関数の非クラス型「int」について、他にいくつか。

main.cpp

学校.h

学校.cpp

person.h

人.cpp

0 投票する
4 に答える
66241 参照

maven - Mavenで循環依存を解決するには?

Maven の循環依存関係をどのように解決できますか?

A が親プロジェクトで、B と C が子プロジェクトであるとします。B が C に依存しており、C が B に依存している場合、別のプロジェクトを作成する以外に、循環依存関係を解決する方法はありますか。

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

java - @Singleton を使用せずに単一のインスタンスを複数のオブジェクトに注入する Guice

私は Guice のドキュメントを読んでいて、「サイクルを排除する (推奨)」というラベルの付いたセクションに出くわしました。これは、まさに今日ドキュメントにたどり着いた問題であるため、私の関心のピークに達しました。

基本的に、循環依存を排除​​するには、「依存ケースを別のクラスに抽出」します。わかりました、新しいことは何もありません。

したがって、この例では次のようになります。

aStoreと a がClerkあり、それぞれに の単一インスタンスへの参照が必要ですCustomerLine。この概念に問題はなく、従来の Dependency Injection で簡単に実行できます。

これは簡単ですが、ここでは、Guice インジェクションを使用してこれを行う必要があります。したがって、私の問題は次の実装にあります。

Store と Clerk の両方が同じ CustomerLine インスタンスを使用していることを確認したい場合があります。

はい、それはまさに私がやりたいことです。しかし、Guice モジュールでそれを行うにはどうすればよいでしょうか?

モジュールでインジェクターを作成します。

今、私はのインスタンスが欲しいStore

これにより、 の新しいインスタンスCustomerLineとが のBossこのインスタンスに挿入されますStoreBossただし、 は のインスタンスを取得し、 のインスタンスClerkも注入されますCustomerLine。この時点で、これは に注入されたインスタンスとは異なる新しいインスタンスになりますStore

質問の再検討

  • を使用せずに、このシーケンスで同じインスタンスStoreを共有するにはどうすればよいですか?Clerk@Singleton

さらに情報が必要な場合、またはこの質問が十分に明確に述べられていない場合はお知らせください。必ず修正します。

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

recursion - F# の関数間の循環依存関係

以下でこの循環依存を解消しようとしていますが、最善の方法がわかりません。

この回答からいくつかのロジックを使用して、次の解決策を思いつきましたが、パフォーマンスが非常に悪いです。

以下の出力に見られるように、cashClosingBalance 関数を書き直して過度の再帰呼び出しを停止する方法はありますか? 最大 400 の t の値を入力できるようにする必要があり、それでも数秒で実行されます。