我正在做一些與課程有關的個人練習。作爲背景,我基本上只想爲一款棋盤遊戲的玩家制作一個課程,根據他們的統計數據進行一些簡單的計算,從而跟蹤他們的回合順序。類未解析的外部符號?
我的播放器類包括此構造線:
Player(string name, int Dex, int Mod, int Lvl, int diceRoll);
其私人數據如下:
int Dex, Mod, Lvl;
string name;
在我的主要功能我有以下的,並且已經包括了iostream和串庫。
int rollD; //Will be input by the user
Player Derek("Derek", 2, 0, 6, rollD);
//... etc.
編譯器引發錯誤恰恰是這樣的:
Initiative.obj:錯誤LNK2019:無法解析的外部符號「公用:__thiscall球員::播放器(類的std :: basic_string的,一流的std ::分配器>,INT,INT,INT,INT)」(?? 0Player @@ @ QAE V'$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@ @ HHHH Z)的函數引用_main
我使用Visual Studio 2012年從我可以告訴,它採取問題,我的構造函數調用的語法,但我相信這是正確的。
任何人都可以幫我嗎?我已經通過其他線程看過「外部符號」的錯誤,但我似乎沒有做過導致錯誤的事情,因爲我的代碼非常簡單。
謝謝!
編輯:新的錯誤。我已經更改了班級中我的私人成員的名字,以便更容易識別(例如,mDex)。所以我有以下幾點:
Player::Player(string name, int Dex, int Mod, int Lvl, int diceRoll) {
mName = name;
mDex = Dex;
mMod = Mod;
mLvl = Lvl;
}
現在我的錯誤是在字符串名稱參數。它似乎將名稱定義爲類型,而不是變量,並說我不允許使用類型名稱。
編輯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;
}
'但是我似乎沒有這樣做,是造成他們的錯誤的東西,因爲我的代碼是非常simple'你沒有實現的方法,是嗎?的 –
可能重複[什麼是未定義參考/解析的外部符號錯誤,以及如何解決呢?(http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external- symbol-error-and-how-do-i-fix) – chris
使用編輯進行更新:您應該使用構造函數初始化程序列表來初始化您的成員。 – chris