[英]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.