私はランダムダンジョンクローラーを作成する必要がある学校プロジェクトを持っています。私はC++にはかなり新しく、エラーがありますが、問題の内容はわかりますが、正確に解決する方法はわかりません。ここでクラス "classname"にはメンバー "function"がありません
はものです:私の商工会議所クラスで
私は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);
};
私はDungeonLayer(層)のポインタを設定し、私は上の関数を呼び出したいときはいつでも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;
};
それはエラーを与える:
例
layer->findChamber(0,0);
エラー:
"class "DungeonLayer" has no member "findChamber" CPPAssessment Chamber.cpp"
Chamber.hでクラスDungeonLayerはそれで何も持っていないので、これは明らかです。しかし、DungeonLayerがChamberからアクセスできるようにするにはどうしたらいいですか?
のようなスマートポインタを持っているときの方法により、Cスタイルのポインタを使用しないでください。あなたがそれを前進させたいと思ったら、それはあなたがそれをやる方法ではありません。 – krzaq
どういう意味ですか?私はDungeonlayer.hとChamber.hでDungeonLayerを宣言しましたか? – Jelmer
いいえhttp://stackoverflow.com/questions/1410563/what-is-the-difference-between-a-definition-and-declaration – krzaq