所以我有一個學校項目,我必須製作一個隨機地牢爬行器。我對C++很陌生,我有一個錯誤,我知道問題是什麼,但我不知道如何正確解決它。類「classname」沒有成員「函數」
這裏是東西:
在我商會類我想要一個指針DungeonLayer類。但是我不能將DungeonLayer.h包含到Chamber.h中,因爲DungeonLayer.h已經包含Chamber.h,所以我得到一個異常。
如何讓DungeonLayer類可以從Chamber類訪問?
文件:
DungeonLayer.h
#pragma once
#include <vector>
#include "Chamber.h"
class DungeonLayer {
public:
DungeonLayer(std::string text, int l);
Chamber findChamber(int x2, int y2);
std::vector<Chamber> chambers;
void generateDungeonLayer();
bool chamberExists(int x2, int y2);
};
Chamber.h
#pragma once
#include <vector>
#include "Enemy.h"
#include "Hero.h"
class DungeonLayer {
};
class Chamber {
public:
Chamber(std::vector<Chamber>* dungeonLayer, int ammountOfChambers);
DungeonLayer *layer;
Chamber *nextChamber;
.......
Chamber* Chamber::getNextChamber();
void moveToChamber();
private:
bool visited;
};
每當我設置DungeonLayer(層)的指針,我想在調用一個函數它會給出錯誤:
示例
layer->findChamber(0,0);
錯誤:
"class "DungeonLayer" has no member "findChamber" CPPAssessment Chamber.cpp"
這是顯而易見的,因爲該類DungeonLayer在Chamber.h有什麼也沒有。但是我怎樣才能使DungeonLayer可以從Chamber上訪問?
您曾兩次定義的類'DungeonLayer'。如果你想提前宣佈它,那不是你怎麼做的。 – krzaq
你是什麼意思?我已經在Dungeonlayer.h和Chamber.h中聲明瞭DungeonLayer或者? – Jelmer
第http://stackoverflow.com/questions/1410563/what-is-the-difference-between-a-definition-and-a-claclaration – krzaq