2013-05-30 3 views
2

Я немного новичок в C++, поэтому я делаю текстовую RPG, чтобы проверить, что я узнал. Я хочу сделать так, чтобы игроку было предложено войти в класс (маг, истребитель, лучник и т. Д.) Каждого из трех своих персонажей.undefined ссылка на статический массив целых чисел

Классы символов хранятся в статическом массиве ints, называемом cls []. Я бы предпочел сохранять вещи статичными и не создавать объект этого класса, так как почти все в игре попытается получить доступ к членам класса. Но по какой-то причине он продолжает давать мне сообщение об ошибке: неопределенная ссылка на `playerVars :: cls '. Я предполагаю, что это означает, что он не может найти массив или что-то еще? Я бы очень признателен за любой свет, который можно было бы пролить на эту тему.

intro.h 
----------------------------- 
#ifndef INTRO_H 
#define INTRO_H 
#include <iostream> 

using namespace std; 

class intro 
{ 
    public: 
     intro(); 
     int inint; 
     void classDecide(int charUsed); 
}; 

#endif 


intro.cpp 
----------------------------- 
#include "intro.h" 
#include "playerVars.h" 

intro::intro() 
{ 
    classDecide(0); //Calls the classDecide function using your first of 3 characters 
} 

void intro::classDecide(int charUsed) 
{ 
    cin >> inint; //Asks for the number of the class that you want 
    playerVars::setClass(charUsed,inint); 
} 


playerVars.h 
----------------------------- 
#ifndef PLAYERVARS_H 
#define PLAYERVARS_H 

using namespace std; 

class playerVars 
{ 
    public: 
     playerVars(); 
     static int cls[3]; 
     static void setClass(int classToSet, int setTo); 
}; 

#endif 


playerVars.cpp 
----------------------------- 
#include "playerVars.h" 

playerVars::playerVars() 
{ 
} 

void playerVars::setClass(int classToSet, int setTo) 
{ 
    cls[classToSet]=setTo; //sets the class of player classToSet to setTo 
      //undefined reference to `playerVars::cls' 
} 
+0

да, он может, до тех пор, как 'setClass()' объявлен как статический метод. Проблема в том, что вам необходимо определить int playerVars :: cls [3] в одном из ваших исходных файлов. Попробуйте поместить 'int playerVars :: cls [3] = {0,0,0};' после '#include" playerVars.h "' – cxyzs7

+0

Возможный дубликат [Что такое неопределенная ссылка/неразрешенная ошибка внешнего символа и как сделать Я исправлю это?] (Http://stackoverflow.com/questions/12573816/what-is-an-undefined-reference-unresolved-external-symbol-error-and-how-do-i-fix) –

ответ

1

Добавить это

int playerVars::cls[3] = {0}; 

в playerVars.cpp

Смежные вопросы