Ошибка связывания при вызове функции - PullRequest
0 голосов
/ 22 сентября 2010

Когда мой код вызывает определенную функцию, я получаю сообщение об ошибке:

H: \ рабочее пространство \ HW5 \ HW5 \ Manager.obj

Ошибка 22 Ошибка LNK2019: неразрешенный внешний символ "public: void __thiscall Шалишут :: Task8_MoveVehicleFromBaseToBase (класс Военный *, символ const *, символ *, символ *) "(? Task8_MoveVehicleFromBaseToBase @ Shalishut @@ QAEXPAVMilitary @@ PBDPAD2 @ Z) упоминается в функции "public: void __thiscall Manager :: TaskExecute (класс Task *, класс Military *, класс Shalishut *, char * * const) " (? TaskExecute @ Диспетчере @@ QAEXPAVTask @@ PAVMilitary @@ PAVShalishut @@ QAPAD @ Z) H: \ рабочее пространство \ HW5 \ HW5 \ Manager.objH: \ рабочее место \ HW5 \ HW5 \ Manager.obj

и:

ошибка LNK1120: 1 неразрешенный внешний вид H: \ workspace \ HW5 \ Debug \ HW5.exe

Когда я не вызываю эту функцию, все в порядке, и проект собирается.

Вот код, вызывающий функцию:

shalishut->Task8_MoveVehicleFromBaseToBase(military,licenseId,campNameA,campNameB);

а вот и функция:

void Task8_MoveVehicleFromBaseToBase(Military* military,const char* licenseId,char* fromBase,char* toBase){
 if (military->IsBaseExist(fromBase)){
  if(military->FindBase(fromBase)->IsVehicleExist(licenseId)){
   if (military->IsBaseExist(toBase)){
    if(military->GetCountry()->IsRoadExist(military->FindBase(fromBase)->GetCityName(),military->FindBase(toBase)->GetCityName())){
     military->FindBase(toBase)->AddVehicleToBase( military->FindBase(fromBase)->RemoveVehicleFromBase(licenseId) );
     Time* time = Time::GetInstance();
     long double distance = military->GetCountry()->GetRoadDistance(military->FindBase(fromBase)->GetCityName(),military->FindBase(toBase)->GetCityName());
     Transport* transportToAdd = new Transport(time->GetTime(),(string)fromBase,(string)toBase,distance);
     military->FindVehicle(licenseId)->AddTransport(transportToAdd);
    }
   }
  }
 }
}

1 Ответ

0 голосов
/ 22 сентября 2010

Я считаю, что объявление функции должно быть:

void Shalishut::Task8_MoveVehicleFromBaseToBase(Military* military,const char* licenseId,char* fromBase,char* toBase) {
...
}

Вы не предоставили нам заголовочные файлы, поэтому я предполагаю, что функция является членом класса шалишут.

...