[英]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.