あなたは2つの無関係な質問をしています。1つの投稿でそれをしないでください。1 つの投稿 - 1 つの質問。これにより、回答が非常に簡単になります。
2番目:
オブジェクトがプッシュバックされたときにオブジェクトをコピーするのではなく、std::vector を強制する方法はありますか?
すでに他の人が答えています。
最初:
std::vector test; を作成し、ループで Table オブジェクトを作成してテスト ベクターにプッシュします。問題は、テーブル内の行内でテーブル * を失うことです。ポインターが必要なため、行を反復処理すると、行がどのテーブルに属しているかがわかります。
ほとんどの場合、ROW には、それを含むテーブルへの後方参照が含まれていません。そうすれば、行のベクトルまたは行自体を渡すと、その所有者に関する情報が失われます。a-vector-of-rows をtable* owner
、またはと一緒に行を渡すかtable* owner
、Row をよりインテリジェントにして、すべての Row に a を強制的に含めるtable* owner
(つまり、Row に所有者への後方参照を含める) 必要があります。
もちろん、後方参照はどのような形でもかまいません。ポインターである必要はありません。Table&
、 a shared_ptr<Table>
、 astring tablename
など、直接またはマネージャーを介してテーブルにアクセスするのに役立つものを渡すことができます。重要なことは、行にそれが含まれている必要があるか、行と一緒に別々に渡される必要があるということです。