簡體   English   中英

類的未解析的外部符號?

[英]Unresolved External Symbol for Class?

我正在做個人作為課堂練習的東西。 作為背景,我基本上只想為棋盤游戲的玩家制作一個類,根據一些使用他們的統計數據的簡單計算來跟蹤他們的回合順序。

我的Player類包含以下構造函數:

Player(string name, int Dex, int Mod, int Lvl, int diceRoll);

其私人數據如下:

int Dex, Mod, Lvl;
string name;

我在main函數中有以下內容,並包含了iostream和字符串庫。

int rollD; //Will be input by the user
Player Derek("Derek", 2, 0, 6, rollD);
//... etc.

編譯器拋出的錯誤恰恰是這樣的:

Initiative.obj:錯誤LNK2019:未解析的外部符號“public:__thiscall Player :: Player(class std :: basic_string,class std :: allocator>,int,int,int,int)”(?? 0Player @@ QAE @ V函數_main中引用了?$ basic_string @ DU?$ char_traits @ D @ std @@ V?$ allocator @ D @ 2 @@ std @@ HHHH @ Z)

我正在使用Visual Studio 2012.從我所知道的,它對我的​​構造函數調用的語法有疑問,盡管我認為它是正確的。

誰能幫我嗎? 我通過“外部符號”錯誤查看了其他線程,但我似乎沒有完成導致錯誤的事情,因為我的代碼非常簡單。

謝謝!

編輯:新錯誤。 我已經在類中更改了我的私有成員的名稱,以便更容易識別(例如,mDex)。 所以我有以下內容:

Player::Player(string name, int Dex, int Mod, int Lvl, int diceRoll) {
              mName = name;
      mDex = Dex; 
      mMod = Mod;
      mLvl = Lvl;
}

現在我的錯誤在字符串名稱參數中。 它似乎將name定義為類型,而不是變量,並且說我不允許使用類型名稱。

編輯2:下面的完整代碼。

#include <iostream>
#include <string>

using namespace std;

class Player {
  public:
Player(string name, int Dex, int Mod, int Lvl, int diceRoll);

int calcInitiative(int Dex, int Mod, int Lvl);
int sortInitiative(int Init);

int diceRoll;

  private:

  int mDex, mMod, mLvl;
  string mName;
};

int main() {
int rollD; //To be given by the user later.

Player::Player(string name, int Dex, int Mod, int Lvl, int diceRoll) {
mName(name), mDex(Dex), mMod(Mod), mLvl(Lvl);
}

Player Derek("Derek", 2, 0, 6, rollD);

return 0;
}

您必須為Player實現構造函數。

內部定義:

class Player{
  //...other stuff
  Player(string name, int Dex, int Mod, int Lvl, int diceRoll):
          name_(name), Dex_(Dex), Mod_(Mod), Lv1_(Lv1), diceRoll_(diceRoll){}
};
//^^^Assume name_ and others are your member variables

外界定義:

Player::Player(string name, int Dex, int Mod, int Lvl, int diceRoll):
          name_(name), Dex_(Dex), Mod_(Mod), Lv1_(Lv1), diceRoll_(diceRoll)
{}

否則,編譯器無法找到構造函數的定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM