0

エラー:Cell.hの12行目:「アクター」が宣言されていない識別子。

その上で前方宣言を行おうとすると、再定義があると表示されます。私は何をしますか?

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

他に何ができますか?

4

2 に答える 2

2

#include "Cell.h"からを削除するActor.hと、準備が整います。

一般に、可能な場合は前方宣言を優先し、必要な場合はそれを含めます。#include "Actor.h"また、 fromCell.hを前方宣言に置き換えますclass Actor;

必要に応じて、cppファイルにヘッダーを含めることができます。

于 2012-11-02T15:49:48.047 に答える
0

#includeとの間の相互参照を介して再帰的なsがcell.hありactor.hます。

Cell.h、を削除し#include <Actor.h>ます。

で、の定義のすぐ上にCell.h行を追加します。class Actor;class Cell

に、を追加する必要があるCell.cpp場合#include "Actor.h"あります。

于 2012-11-02T15:50:11.630 に答える