将对象从一个向量传递到另一个类
Passing a objects from a vector to another class
我有三个类:
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
es活着的时候不会有任何东西被推入你的users
矢量,否则你需要:
-
在向量中保留一个索引(
std::size_t
)。但您还需要对向量本身的引用,这样您就可以通过vec[idx]
访问对象。 -
添加间接:将
users
设为std::vector<std::unique_ptr<User>>
(或shared_ptr
,具体取决于您的设计)。那么User
对象本身将永远不会移动。
相关文章:
- C++从另一个类访问公共静态向量的正确方法是什么
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- 将一个向量插入另一个向量的某个位置
- 将指向给定子类的指针从一个向量复制到另一个向量
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 如何在不复制的情况下将一个向量移动到另一个向量中
- 使用 std::transform 将向量向量 (a) 添加到另一个向量向量 (b)
- 如何按另一个向量的方向调整一个向量?
- 将字符向量复制到另一个向量
- 如何将包含另一个对象向量的对象保存到文件中,并使用C++中的二进制文件从文件中读回?
- 如何避免将向量的完整值复制到另一个容器
- 如何将所有指针从一个向量移动到另一个向量?
- 如何从另一个向量中的另一个第一元素减去向量中的第一元素
- 用一个向量替换另一个向量的方法
- 如何根据另一个向量中给出的索引拆分向量?
- 如何在另一个类中调用类型类的向量?
- 按另一个向量对一个向量进行排序
- 具有多线程支持的 RenderClass,将函数调用推送到向量以在另一个线程上调用
- 如何设置一个 std::vector 与另一个,其中两个是不同类的向量?