0

错误:Cell.h 的第 12 行:“演员”未声明的标识符。

如果我尝试在其上方转发声明,则表示有重新定义。我该怎么办?

演员.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

单元格.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

细胞.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*)
{
}

我还可以做些什么?

4

2 回答 2

2

删除#include "Cell.h"from Actor.h,你就可以开始了。

通常,在可能的情况下更喜欢前向声明,并在必须的地方包括在内。我还将#include "Actor.h"from替换Cell.h为前向声明:class Actor;.

cpp如果需要,可以在文件中包含标题。

于 2012-11-02T15:49:48.047 回答
0

您通过和#include之间的相互引用具有递归s 。cell.hactor.h

Cell.h,删除#include <Actor.h>

在中,在 的定义上方Cell.h添加一行。class Actor;class Cell

Cell.cpp中,您可能需要添加#include "Actor.h".

于 2012-11-02T15:50:11.630 回答