1. ホーム
  2. c++

[解決済み] 家系図ソフトのサイクル

2022-03-15 08:11:49

質問

私はある家系図ソフト(C++とQtで書かれています)の開発者です。顧客の一人が私にバグレポートを郵送してくるまでは、何の問題もありませんでした。問題は、その顧客が自分の娘との間に二人の子供を持ち、その結果、エラーのために私のソフトウェアを使うことができないということです。

これらのエラーは、処理中の家族グラフに関する私のさまざまなアサーションや不変条件(たとえば、1サイクル歩いた後、プログラムはXがYの父と祖父の両方であることはできないと述べる)の結果です。

すべてのデータ・アサーションを削除せずに、これらのエラーを解決するにはどうすればよいですか?

どのように解決するのですか?

家系図とは何か、根本的に誤解しているようです。

私も家系図を製品として持っている会社で働いていますが、同じような問題で悩んでいます。

この問題は、私たちの場合、そしてあなたの場合も同様だと思います。 GEDCOM このフォーマットは、家族のあり方について極めて独断的なものです。しかし、このフォーマットには、家系図が実際にどのようなものであるかについて、深刻な誤解が含まれているのです。

GEDCOM には、同性間の関係や近親相姦などとの非互換性など、多くの問題があります...。特に、1700年から1800年にかけての時代には)想像以上に頻繁に起こることなのです。

私たちは、現実の世界で起こることを家系図にモデル化しています。イベント(例えば、誕生、結婚式、婚約、結婚、死亡、養子縁組など)です。論理的に不可能なこと(例えば、人は自分の親になれない、関係は2人の個人を必要とする、など)を除いて、これらには何の制限も加えていません。

検証を行わないことで、より現実的で、よりシンプルで、より柔軟なソリューションが実現します。

この具体的なケースに関しては、アサーションは普遍的に成立するものではないので、削除することをお勧めします。

表示に関する問題(今後発生する可能性があります)については、同じノードを必要なだけ描き、そのうちの1つを選択するとすべてのコピーが点灯することで重複をほのめかすようにすることをお勧めします。