将包添加到对象内的包向量中
adding package to a vector of packages inside an object
所以我有一个Truck对象,它包含一个存放包的向量。我正在创建一个Letter
,这是一个子类的包,并想添加到它。当我尝试在向量上添加一个字母时,我得到了一个错误
这是初始化了字母的主类
main ()Letter *letter = new Letter();
trucks.packages.push_back(letter);
在truck.h文件
truck.h
std::vector<Package> packages;
初始化为public
no matching function for call to std::vector<Package>::push_back(Letter*&)’ truck.packages.push_back(letter);
您push_back
一个指针Letter*
,但vector包被定义为Package
的容器,而不是Package*
。
std::vector<Package*> packages;
最好是使用智能指针std::shared_ptr<Package>
或std::unique_ptr<Package>
代替原始指针,例如
std::vector<std::shared_ptr<Package> > packages;
std::shared_ptr<Letter> letter(new Letter());
trucks.packages.push_back(letter);
这样,你就不需要手动的去分配等等
您的向量被声明为按值接受Package
对象。由于letter
是指向Letter
对象的指针,因此类型不匹配,从而导致错误。把vector的类型改成Letter*
:
std::vector<Package*> packages;
此外,建议您使用内存管理容器,以避免内存泄漏(例如当忘记delete
时,似乎您已经这样做了),并促进手动内存管理。标准提供的这种容器是std::shared_ptr<>
:
std::vector<std::shared_ptr<Package>> packages;
packages.push_back(std::make_shared<Package>());
相关文章:
- 写入向量<向量<bool>>
- 如何写向量的无序向量集,即unordered_set<向量<向量<int>>集合?
- 将树节点添加到向量向量中的 n 元树遍历的平均和最坏情况时间复杂度是多少?
- C++在 2 个向量向量之间交换向量
- 使用 std::transform 将向量向量 (a) 添加到另一个向量向量 (b)
- 创建要在类中使用的向量向量,并使用 CERNROOT 绘制
- C++如何将字符数组转换为字节向量(向量<byte>)
- 向量向量的分割错误
- 关于在向量向量上使用基于范围的 for 循环
- 为什么我不能返回向量<向量<int>>(进程返回 -1073741819 (0xC0000005))
- C++如何为向量向量构建迭代器
- C++:向量<向量<int>>迭代器?
- 指针(指向指针)和新/malloc 向量(向量内部)c++
- 在每个向量<向量中查找最小/最大 x,y<Point>>
- 从整数向量向量搜索整数向量的最佳算法
- 将向量插入到向量向量中
- 向量向量的范围范围
- 向量下标超出向量向量的范围
- 忽略set_difference向量向量中的最后一个字符串
- C 从参数参数包创建向量或列表