2017-04-22 12 views
-3

現在、ベクトルを使用してゲームに箇条書きを格納しようとしています。 push_backを使用してリストに新しいオブジェクトを追加しようとすると、未解決の外部シンボルエラーが発生します。私は整数に変更しようとしたとベクトルが働くので、私はそのリンカのエラーを疑う? 私のベクトルは私のメインのCPPで初期化され、別のクラスの中でこの関数に何回か渡されます。ここでベクトルでクラスオブジェクトを使用しているときに未解決の外部シンボルエラー

は私のコードです:

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

私のエラーは、次のとおりです。

LNK2019未解決の外部シンボル " firedBullet(無効)__cdeclクラスの弾丸"(firedBullet @@ YA AVBullet @@ XZ? ) で参照されていますfunction "public:void __thiscall Hero :: shoot(class std :: vector>)" (?shoot @ Hero @@ QAEXV?$ vector @ VBullet @@ V?$ allocator @ @@ 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-do-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

関連する問題