Необъявленный идентификатор вектора указателей на объекты

Ошибка: строка 12 из Cell.h: необъявленный идентификатор «Актер».

Если я пытаюсь форвард объявить выше, он говорит, что есть переопределение. Что я делаю?

Actor.h:

#ifndef ACTOR_H
#define ACTOR_H
#include <iostream>
#include <vector>
#include <string>
#include "Cell.h"using namespace std;

class Actor //Simple class as a test dummy.
{
public:
Actor();
~Actor();

};
#endif

Cell.h:

#include <iostream>
#include <string>
#include <vector>
#include "Actor.h"#ifndef CELL_H
#define CELL_H
using namespace std;

class Cell   // Object to hold Actors.
{
private:
vector <Actor*> test;
public:
Cell();
~Cell();
vector <Actor*> getTest();
void setTest(Actor*);
};

#endif

Cell.cpp:

#include "Cell.h"#include <vector>

vector<Actor*> Cell::getTest()  //These functions also at one point stated that
{                               // they were incompatible with the prototype, even
}                               // when they matched perfectly.
void Cell::setTest(Actor*)
{
}

Что еще я могу сделать?

0

Решение

У вас рекурсивный #includeчерез ваши взаимные ссылки между cell.h а также actor.h,

В Cell.h, удалять #include <Actor.h>,

В Cell.h, добавьте строку class Actor; чуть выше определения class Cell,

В Cell.cpp, вы может быть нужно добавить #include "Actor.h",

0

Другие решения

Удалить #include "Cell.h" от Actor.h и вы готовы идти.

В общем, предпочитайте предварительные декларации, где вы можете, и включает, где вы должны. Я также заменил бы #include "Actor.h" от Cell.h с предварительной декларацией: class Actor;,

в cpp файлы, которые вы можете включить заголовки, если они вам нужны.

2

По вопросам рекламы [email protected]