簡體   English   中英

將對象從向量傳遞到另一個類

[英]Passing a objects from a vector to another class

我有3節課:

class User{
}

class Main{
public:
   void AddClash(){
       clash.push(Clash(...))
   }
private:
   std::vector<User> users;
   std::vector<Clash> clash;
}

class Clash{
public:
   //constructor
private:
   std::array<...,2> users;
}

我想在Main類中有一個方法,該方法將創建一個Clash對象,該對象的字段指向Main類中std::vector users兩個對象。

這樣做的正確方法是什么(指針,std :: reference_wrapper,std :: shared_ptr等)?

您將面臨以下問題: std::vector在需要增長時會替換其內容,從而使進程中的任何指針,引用或迭代器無效。

因此,除非您確定在Clash存活期間不會將任何內容推入users向量,否則您需要:

  • 在向量中保留一個索引( std::size_t )。 但是,您還需要對向量本身的引用,因此可以通過vec[idx]訪問對象。

  • 添加一個間接關系:使users成為std::vector<std::unique_ptr<User>> (或shared_ptr ,具體取決於您的設計)。 然后, User對象本身將永遠不會移動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM