目前正在尝试使用向量来存储游戏中的项目符号。 当我尝试使用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
请帮助。
答案 0 :(得分:1)
那是因为你声明并调用了一个没有定义的函数。
Bullet firedBullet();
声明一个不带参数的函数并返回Bullet
。
bullets.push_back(firedBullet());
调用该函数,从而导致链接器错误
(我怀疑你在firedBullet
添加了括号以使其编译?)
应该是
Bullet firedBullet;
bullets.push_back(firedBullet);
或
bullets.push_back(Bullet());
或
bullets.emplace_back();