2017-05-25 7 views
0

下記のコードの場所に表示される商品リストは、タイプitemのベクトルであり、タイプitemには2種類のベクトルがあり、1つは買い手、もう1つは売り手です。基本的には、ここでローカルオブジェクトのすべてのメモリを共有している可能性があります。明らかにCのコピーコンストラクタは可能ではありません。私はこれにどのようにアプローチすべきですか? btw..vectorにメンバー "void ** obj"があります。 C++のように参照の公式という概念が存在しない、私は、これはCで良いだろう知っ++が、私はCでその豪華さにCでベクトルにオブジェクトを追加する方法は?

if(b->location->commodity != NULL){ 


      trader s; 
      s.store = b->location; 
      s.distance = i; 

      int index = search_items(commodity_list, b->location->commodity->name); 

      if(index == -1){ //this is a new commodity, not found in commodity list 

       item it; //create a new commodity in list 
       v_init(&it.sellers); 
       v_init(&it.buyers); 
       it.name = b->location->commodity->name; 

       if(b->location->type == LOCATION_SELLER){ 
        v_add(&it.sellers, &s); //add buyer/seller to list of patrons in said commodity 
       } else { 
        v_add(&it.buyers, &s); 
       } 

       v_add(commodity_list, &it); // add commodity to list of commodities 

      } else { //add seller/buyer to existing item in the commodity list 

       item* it = ((item*)v_get(commodity_list, index)); 

       if(b->location->type == LOCATION_SELLER){ 
        v_add(&it->sellers, &s); 
       } else { 
        v_add(&it->buyers, &s); 
       } 
      } 
     } 
+0

はなぜあなたのベクトルの実装では、ボイド* OBJの代わりに**無効を宣言していませんか? – zerek

+0

申し訳ありません、無駄です** – GCGsauce

+0

どのように私はそれに物を追加する必要がありますので、メモリdoesntが失われるのですか? – GCGsauce

答えて

1

を持っていけません。

動的に割り当てられていないオブジェクトを挿入しようとしています。したがって、オブジェクトは関数のスコープの終わりに自動的に破棄されます。

mallocあなたのプリンシパルitemtraderオブジェクトには、プログラム内のどこにでもそれらを保存する必要があります。

See there

関連する問題