2017-04-22 30 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

相關問題