这个问题可能是一个noob问题,因为我刚刚开始使用C ++。但我无法找出我做错了什么。我正在进行的项目是学校的任务。在这个赋值中,我们只允许使用原始指针,因此我们可以找到原始指针的工作原理。
现在那些原始指针给我带来了一些麻烦。那些指针给了我错误:'没有合适的转换功能来自" Room"到"房间*"存在'
为了尝试解释我是如何导致此错误的,我将尝试提供我编写的代码的精简版本。
class Level
{
private:
Room _startRoom;
vector<vector<Room>> _rooms;
};
class Room
{
public:
Room *North;
Room *East;
Room *South;
Room *West;
};
我有一个名为Level的类,这是一个在向量中有向量的类,能够巧妙地打印出彼此相邻的房间。不是每个房间都连接在一起,所以我给了房间方向属性与其他房间的连接。但是当我尝试在房间之间建立连接时,通过设置_rooms [y] [x]。南方与_rooms [y + 1] [x]。我收到了错误:&#39;没有合适的转换功能来自&#34; Room&#34;到&#34;房间*&#34;存在&#39;
有人可以澄清我收到此错误消息的原因吗?所有帮助将不胜感激。
答案 0 :(得分:0)
表达式_rooms[y + 1][x]
是Room
实例,而不是指向房间的指针。要获得指向它的指针,您需要使用address-of运算符&
:
_rooms[y][x].South = &_rooms[y+1][x];
关于不相关的说明:您是否记得填充Level
对象中的向量?