注:私は、これはSOの前に頼まれているに類似の質問を知っているが、私は彼らが役に立つか、非常に明確で見つけることができませんでした。Cはベクトル上に複数のタイプをプッシュ++
第2のメモ:このプロジェクト/割り当ての範囲については、私はBoostのようなサードパーティのライブラリを避けようとしています。
私はそのインデックスのそれぞれに、複数のタイプを保持する単一のベクターを持つことができる方法があるかどうかを確認しようとしています。例えば、私は次のコードサンプルを持っていると言う:
vector<something magical to hold various types> vec;
int x = 3;
string hi = "Hello World";
MyStruct s = {3, "Hi", 4.01};
vec.push_back(x);
vec.push_back(hi);
vec.push_back(s);
私はvector<void*>
は仕事ができると聞きましたが、その後、それはメモリの割り当てとトリッキー取得し、近くのメモリ内の特定の部分が意図せずになる可能性が常にあります特定のインデックスに挿入された値が予想よりも大きい場合はオーバーライドされます。
の可能性がありますタイプはベクターに挿入できますが、これらのタイプはすべて同じスーパークラスから派生しているわけではなく、これらのタイプがすべてプッシュされる保証はありませんベクトルまたはどのような順序。
安全に私のコードサンプルで実証した目的を達成する方法はありますか?
ありがとうございます。
が、私は明確ではありませんでした申し訳ありません@クリス:私たちがやりたいすべてがコンソールにオブジェクトを印刷であれば
は、ここでの例です。このプロジェクト/割り当ての範囲については、私は第三者図書館を避けようとしています。私は私の質問を更新しました。 –
さて、どのようにうまくいくのか分かりませんが、 'type'メンバとすべての可能な型の和集合を持つ構造体を持つことができます。 – chris
実際にプッシュされていることを*知ることができないことを義務づけているのであれば、このベクトルはポインタ以外に何も所有していないと仮定できますか?所有者レベルでタイプ情報を確立する何らかの方法がなければ、クリーンアップまたは消去を適切に管理することにいくらか悩まされます。ポインタ+デストラクタ参照を持つ構造体が考えられますが、実際のデータモデルはここで処理されているのですか? – WhozCraig