2017-04-22 53 views
-3

当前尝试使用矢量来在游戏中存储子弹。 当我尝试使用push_back将新对象添加到列表中时,我得到一个无法解析的外部符号错误。我试图将其更改为一个整数,矢量的作品,所以我怀疑它的链接错误? 我的矢量在我的主要CPP中初始化,然后在一个单独的类中传递给这个函数几次。使用类对象与矢量时无法解析的外部符号错误

这里是我的代码:

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

我的错误是:??

LNK2019解析的外部符号 “类子弹__cdecl firedBullet(无效)”(firedBullet @@ YA AVBullet @@ XZ )参考 函数“public:void __thiscall Hero :: shoot(class std :: vector>)” (?shoot @ Hero @@ QAEXV?$ vector @ VBullet @@ V?$ allocator @ VBullet @@@ std @ @@ std @@@ Z)Project1 H:\ C++ \ Project1 \ Project1 \ Hero.obj

请帮忙。

+1

“我怀疑其链接器错误“未解决的引用始终是链接器错误。 –

+0

当然这是一个链接器错误。链接器正在抱怨。你没有提供足够的代码来找出确切的原因,所以请提供[mcve]。话虽如此,这个问题可能是http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-doi-i-fix – Rakete1111

+1

'Bullet firedBullet();' - 这不符合你的想法。它没有声明'Bullet'的实例。我敢打赌,链接器抱怨你的虚假fireBullet()函数。为什么不发布链接器错误? – PaulMcKenzie

回答

1

这是因为你已经声明和调用了一个没有定义的函数。

Bullet firedBullet(); 

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

bullets.push_back(firedBullet()); 

调用该函数,因此你得到一个链接器错误。
(我怀疑你添加上firedBullet括号,使其编译?)

应该

Bullet firedBullet; 
bullets.push_back(firedBullet); 

bullets.push_back(Bullet()); 

bullets.emplace_back(); 
+0

或者它可以是'bullets.push_back(Bullet());'没有中间声明。 – PaulMcKenzie

相关问题