错误:Cell.h的第12行:'Actor'未声明的标识符。
如果我试图将声明转发到它上面,它会说有一个重新定义。我该怎么办?
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 :(得分:2)
从#include "Cell.h"
移除Actor.h
,您就可以开始了。
一般情况下,您可以选择前向声明,并包括您必须的位置。我还会使用前瞻声明#include "Actor.h"
替换Cell.h
中的class Actor;
。
在cpp
文件中,如果需要,可以包含标题。
答案 1 :(得分:0)
您通过#include
和cell.h
之间的相互引用获得递归actor.h
。
在Cell.h
中,删除#include <Actor.h>
。
在Cell.h
中,在class Actor;
定义的正上方添加class Cell
行。
在Cell.cpp
中,可能需要添加#include "Actor.h"
。