gpt4 book ai didi

c++ - 将指针 vector 作为参数传递

转载 作者:行者123 更新时间:2023-11-30 04:29:14 26 4
gpt4 key购买 nike

void spawn_enemies(vector<Enemy>& enemies) {

我有那个函数,它可以很好地传递一个 Enemy vector 作为参数。

但是,我知道有一个 vector <Enemy*>的,而且效果不是很好,我也尝试过使用:

void spawn_enemies(vector<Enemy*>& enemies) {

但它也不起作用,我在编译时得到以下错误:

src/Paxlure.cpp:32:28: error: no matching function for call to ‘std::vector<Enemy*>::push_back(Enemy&)’
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.2/../../../../include/c++/4.6.2/bits/stl_vector.h:826:7: note: void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = Enemy*, _Alloc = std::allocator<Enemy*>, std::vector<_Tp, _Alloc>::value_type = Enemy*]
/usr/lib/gcc/x86_64-unknown-linux-gnu/4.6.2/../../../../include/c++/4.6.2/bits/stl_vector.h:826:7: note: no known conversion for argument 1 from ‘Enemy’ to ‘Enemy* const&’

谢谢

最佳答案

如果您有指针的 vector ,则需要push_back 指针,而不是对象。

vector<Enemy> enemies;
Enemy e;
enemies.push_back(e);

对比

vector<Enemy*> enemies;
Enemy* pe = new Enemy;
enemies.push_back(pe);

在后一种情况下,对于动态分配的内存,您需要自己释放它:delete pe;。但是你必须确保你正确地管理内存 - 在你确定 vector 将不再尝试使用它之前不要删除它。或者简单地使用智能指针而不是原始指针。

关于c++ - 将指针 vector 作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9535677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com