1

C++ で異種の型の配列を作成する必要があります。配列はコンパイル時に構築されますが、その構築はさまざまなコンパイル単位 (つまり、さまざまなソース ファイル) に分散されます。アプリケーションのプログラミングが進むにつれて、新しい型を含むように配列を簡単に拡張する必要があります。結果の配列は、実行時にアクセスする必要があります。

それは可能ですか?

ブースト mpl とブースト フュージョンについて少し調べましたが、答えが見つかりませんでした。

ありがとう

4

1 に答える 1

3

配列はコンパイル時に構築されますが、その構築は異なるコンパイル単位に分散されます

これは不可能です。翻訳単位は、他の翻訳単位について知りません。TU 以外に何もないので、何も調整することはできません。

foo.cppタイプ のオブジェクトを追加して、の配列を設定するとしますFoo。どのインデックスに配置する必要がありますか? 他にどのような指標があるかは不明であるため、特定することはできません。

リンカはすべての TU を認識しています。残念ながら、リンカは依然としてかなり馬鹿げており、リンク時にユーザー コードを実行することはできません。myarray.push_back(Foo())リンカがもう少し賢ければ、TU のようなことを行うことができます。しかし、それはできません。

もちろん、実行時に実行することもできますpush_back

おそらく、あなたの本当の問題を説明すれば、集団は解決策を見つけることができるでしょう.

于 2012-07-15T07:46:48.360 に答える