2013-11-28 4 views
1

Я получаю неопределенные ссылки при использовании векторов.Неопределенный справочник по вектору

Здесь ошибка:

/tmp/ccYnTr05.o: In function `TourManager::addCity(City)': 
tsp.cpp:(.text._ZN11TourManager7addCityE4City[TourManager::addCity(City)]+0x1c): undefined reference to `TourManager::destinationCities' 
/tmp/ccYnTr05.o: In function `TourManager::getCity(int)': 
tsp.cpp:(.text._ZN11TourManager7getCityEi[TourManager::getCity(int)]+0x14): undefined reference to `TourManager::destinationCities' 
/tmp/ccYnTr05.o: In function `TourManager::numberOfCities()': 
tsp.cpp:(.text._ZN11TourManager14numberOfCitiesEv[TourManager::numberOfCities()]+0x5): undefined reference to `TourManager::destinationCities' 
collect2: ld returned 1 exit status 

А вот фрагмент кода:

class TourManager 
{ 
private: 

    static vector<City> destinationCities; 

public: 

    static void addCity(City city) 
    { 
     destinationCities.push_back(city); 
    } 

    static City getCity(int index) 
    { 
     return (City)destinationCities.at(index); 
    } 

    static int numberOfCities() 
    { 
     return (int)destinationCities.size(); 
    } 
}; 

Я понимаю, что вектор не инициализируется значением, но не векторы динамически выделять Память? Я не уверен, как устранить эту неопределенную ссылочную проблему? Является ли проблема с вектором или чем-то еще? Благодарю.

ответ

2

Вы только объявили вектор как статический элемент данных, но вам также необходимо определить его вне класса. Например

vector<City> TourManager::destinationCities; 
+0

Когда я делаю это я получаю сообщение об ошибке: «„ destinationCities“Extra квалификацию на членов» – freecrap

+0

больше вы должны сделать это вне определения класса One. –

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