2014-09-05 3 views
0

Я просто знаком с C++, так что несите меня. Внутри моего класса, MyArena, я сделал вектор указателей, fighters, другого класса, Fighter. С помощью этого вектора я собираю указатели Fighter и вызывающие функции для них. Но я продолжаю получать ошибки для fighters.Вызывающие функции из вектора указателя

#include <vector> 

using namespace std; 
class Fighter; 

class MyArena { 

    vector<Fighter*> fighters; 
    int current_size = 0; 

    bool MyArena :: addFighter(string info){ 

     for (int i = 0; i < 11; i++){ 
      if (fighters[i]->getName() == n) //error that "point to incomplete pass type is not allowed?" 
       isLegit = false; 
     } 

     fighters.push_back(new Fighter(n, t, mH, st, sp, m)); //"Fighter" is incomplete type? 
     return true; 
    } 

    bool removeFighter(string name){ 
     for (int i = 0; i < 11; i++){ 
      if (fighters[i]->getName() == name)//error that "point to incomplete pass type is not allowed?" 
       fighters[i] = NULL; 
     } 
    } 

}; 

Как я должен подходить к этому?

+1

'Истребитель' не определен. Переместите определения функции члена из заголовка и в файл '.cpp'. –

+3

'Вопросы, требующие помощи по отладке (« почему этот код не работает? ») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны для других читателей. См.: [Как создать минимальный, полный и проверенный пример.] (Http://stackoverflow.com/help/mcve) –

ответ

0

Вы вперед объявить класс здесь:

class Fighter; 

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

#include "Fighter.h" 

или относительный путь, чтобы добраться до Fighter.h, если он находится в другой папке.

+0

Да, я забыл # включить класс. –

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