私はこれの小さな例を作っているようには見えませんが、誰かがそれに前に走っているかもしれません。クラスメソッドで連想配列にリンクできないのはなぜですか?
私は方法void find()
で、クラス、Path
を持っていると私はメソッドの内部タイプint[string]
の連想配列をインスタンス化しようとすると、私はこのようになりますリンカエラーを取得:
/tmp/ccTF0A0c.o: In function `_D6object28__T16AssociativeArrayTAyaTiZ16AssociativeArray6rehashMFNdZHAyai':
game.d:(.text._D6object28__T16AssociativeArrayTAyaTiZ16AssociativeArray6rehashMFNdZHAyai[_D6object28__T16AssociativeArrayTAyaTiZ16AssociativeArray6rehashMFNdZHAyai]+0x44): undefined reference to `_D14TypeInfo_HAyai6__initZ'
collect2: ld returned 1 exit status
た場合、私はクラスのメンバーに連想配列を貼り付けると、すべてがうまく見えます。
class Path
{
int[string] bar; // Here it works.
void find()
{
int[string] foo; // Here it fails.
}
}
私は再現できません。あなたの例をvoid main(){}でコンパイルできますか?またはrdmd --main game.d –
私の例では問題は発生しません。私は比較的大きなプロジェクトからそれを分けているようには見えません。 – nmichaels
さて、あなたは実際に失敗した例を提供する必要があるか、またはあなたを助けるのが非常に困難になるでしょう。あなたのローカルセットアップに奇妙なリンカの問題がある可能性があります。コンパイラのバグに遭遇した可能性があります。コードを少しだけ減らして、コードに実際の問題がある可能性がありますあなたがコードを減らしたときに問題のコードを取り除いたので、指摘できません。 –