これは私のコードの一部を簡略化したものです。
public struct info
{
public float a, b;
public info? c;
public info(float a, float b, info? c = null)
{
this.a = a;
this.b = b;
this.c = c;
}
}
問題は、Struct member 'info' causes a cycle in the struct layout.
値型の振る舞いのような構造体の後に発生するエラーです。クラスとクローンメンバー関数を使用してこれをシミュレートすることはできますが、なぜそうする必要があるのかわかりません。
このエラーはどのように真実ですか?同様の状況では、再帰によって構築が永久に発生する可能性がありますが、この場合に発生する可能性のある方法は考えられません。以下は、プログラムがコンパイルされる場合に問題ないはずの例です。
new info(1, 2);
new info(1, 2, null);
new info(1, 2, new info(3, 4));
編集:
私が使用した解決策は、「info」を構造体ではなくクラスにし、それを渡すときに使用したコピーを返すメンバー関数を与えることでした。事実上、構造体と同じ動作をシミュレートしますが、クラスを使用します。
また、答えを探しながら次の質問を作成しました。