使用带有向量

时间:2017-04-22 17:39:32

标签: c++ vector

目前正在尝试使用向量来存储游戏中的项目符号。 当我尝试使用push_back将新对象添加到列表时,我得到一个未解决的外部符号错误。我已经尝试将其更改为整数并且向量有效,所以我怀疑它是链接器错误吗? 我的向量在我的主要CPP中初始化,然后在一个单独的类中传递给该函数几次。

这是我的代码:

void Hero::shoot(std::vector<Bullet> bullets)
{
    Bullet firedBullet();
    bullets.push_back(firedBullet());
}

我的错误是:

  

LNK2019未解析的外部符号&#34;类Bullet __cdecl   firedBullet(无效)&#34; (?firedBullet @@ YA?AVBullet @@ XZ)参考   function&#34; public:void __thiscall Hero :: shoot(class std :: vector&gt;)&#34;   (?拍摄@ Hero @@ QAEXV?$ vector @ VBullet @@ V?$ allocator @ VBullet @@@ std @@@ std @@@ Z)Project1 H:\ C ++ \ Project1 \ Project1 \ Hero.obj

请帮助。

1 个答案:

答案 0 :(得分:1)

那是因为你声明并调用了一个没有定义的函数。

Bullet firedBullet();

声明一个不带参数的函数并返回Bullet

bullets.push_back(firedBullet());

调用该函数,从而导致链接器错误 (我怀疑你在firedBullet添加了括号以使其编译?)

应该是

Bullet firedBullet;
bullets.push_back(firedBullet);

bullets.push_back(Bullet());

bullets.emplace_back();