Undeclared标识符指向对象的指针

时间:2012-11-02 15:48:11

标签: c++ undeclared-identifier

错误: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*)
{
}

我还能做什么?

2 个答案:

答案 0 :(得分:2)

#include "Cell.h"移除Actor.h,您就可以开始了。

一般情况下,您可以选择前向声明,并包括您必须的位置。我还会使用前瞻声明#include "Actor.h"替换Cell.h中的class Actor;

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

答案 1 :(得分:0)

您通过#includecell.h之间的相互引用获得递归actor.h

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

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

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