C++ “类”;“类名”;“没有成员”;功能“;
所以我有一个学校项目,我必须做一个随机的地牢爬虫。我对C++很陌生,我有一个错误,我知道问题是什么,但是我不知道如何精确地解决它。 事情是这样的: 在我的密室类中,我想要一个指向地下城层类的指针。但是我不能把DungeonLayer.h包含到Chamber.h中,因为DungeonLayer.h已经包含Chamber.h,所以我得到了一个例外 我如何使地下城玩家可以从密室类访问它? 档案: 地下城玩家C++ “类”;“类名”;“没有成员”;功能“;,c++,c++11,pointers,visual-c++,C++,C++11,Pointers,Visual C++,所以我有一个学校项目,我必须做一个随机的地牢爬虫。我对C++很陌生,我有一个错误,我知道问题是什么,但是我不知道如何精确地解决它。 事情是这样的: 在我的密室类中,我想要一个指向地下城层类的指针。但是我不能把DungeonLayer.h包含到Chamber.h中,因为DungeonLayer.h已经包含Chamber.h,所以我得到了一个例外 我如何使地下城玩家可以从密室类访问它? 档案: 地下城玩家 #pragma once #include <vector> #include "
#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);
};
错误:
"class "DungeonLayer" has no member "findChamber" CPPAssessment Chamber.cpp"
这是显而易见的,因为h室中的地下城层一无所有。但我如何才能使地下城层可以从密室访问呢?如果我正确理解了您的问题,这与中描述的问题相同: 它被称为循环依赖。它们都包括彼此。在这种情况下,在密室中向前声明地下城层,使其在密室中看起来像这样。h:
class DungeonLayer;
class Chamber {
public:
Chamber(std::vector<Chamber>* dungeonLayer, int ammountOfChambers);
DungeonLayer *layer;
Chamber *nextChamber;
.......
Chamber* Cha
}
顺便说一句,当你有像shared_ptr这样的智能指针时,不要使用C风格的指针。你已经定义了两次class
DungeonLayer
。如果你想转发声明,你不是这样做的。你是什么意思?我已经在地下城里宣布了地下城。h和在密室里。h或?不。这没有帮助,我很抱歉,但我正在寻找答案…谢谢!我一直在寻找最后一行,现在对我来说也很明显,我们还不允许使用智能指针哈哈。但是谢谢你的提示!
"class "DungeonLayer" has no member "findChamber" CPPAssessment Chamber.cpp"
class DungeonLayer;
class Chamber {
public:
Chamber(std::vector<Chamber>* dungeonLayer, int ammountOfChambers);
DungeonLayer *layer;
Chamber *nextChamber;
.......
Chamber* Cha
}
#include "DungeonLayer.h"