C++ で異種の型の配列を作成する必要があります。配列はコンパイル時に構築されますが、その構築はさまざまなコンパイル単位 (つまり、さまざまなソース ファイル) に分散されます。アプリケーションのプログラミングが進むにつれて、新しい型を含むように配列を簡単に拡張する必要があります。結果の配列は、実行時にアクセスする必要があります。
それは可能ですか?
ブースト mpl とブースト フュージョンについて少し調べましたが、答えが見つかりませんでした。
ありがとう
C++ で異種の型の配列を作成する必要があります。配列はコンパイル時に構築されますが、その構築はさまざまなコンパイル単位 (つまり、さまざまなソース ファイル) に分散されます。アプリケーションのプログラミングが進むにつれて、新しい型を含むように配列を簡単に拡張する必要があります。結果の配列は、実行時にアクセスする必要があります。
それは可能ですか?
ブースト mpl とブースト フュージョンについて少し調べましたが、答えが見つかりませんでした。
ありがとう
配列はコンパイル時に構築されますが、その構築は異なるコンパイル単位に分散されます
これは不可能です。翻訳単位は、他の翻訳単位について知りません。TU 以外に何もないので、何も調整することはできません。
foo.cpp
タイプ のオブジェクトを追加して、の配列を設定するとしますFoo
。どのインデックスに配置する必要がありますか? 他にどのような指標があるかは不明であるため、特定することはできません。
リンカはすべての TU を認識しています。残念ながら、リンカは依然としてかなり馬鹿げており、リンク時にユーザー コードを実行することはできません。myarray.push_back(Foo())
リンカがもう少し賢ければ、TU のようなことを行うことができます。しかし、それはできません。
もちろん、実行時に実行することもできますpush_back
。
おそらく、あなたの本当の問題を説明すれば、集団は解決策を見つけることができるでしょう.