私はクラスでの演習として個人的なことに取り組んでいます。背景として、私は基本的に、ボードゲームのプレーヤー用のクラスを作成して、統計を使用した簡単な計算に基づいてターンの順序を追跡したいと考えています。
私の Player クラスには、次のコンストラクタ行が含まれています。
Player(string name, int Dex, int Mod, int Lvl, int diceRoll);
そのプライベートデータは次のとおりです。
int Dex, Mod, Lvl;
string name;
メイン関数には次のものがあり、iostream および string ライブラリが含まれています。
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 ?$basic_string@DU?$char_traits@D@std@@V?$allocator@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;
}