-1

这个问题可能是一个菜鸟问题,因为我刚刚开始使用 C++。但我无法找出我做错了什么。我正在做的项目是学校的作业。在这个赋值中,我们只允许使用原始指针,所以我们找出原始指针是如何工作的。

现在那些原始指针给了我一些麻烦。这些指针给了我错误:'不存在从“房间”到“房间 *”的合适转换函数'。

为了尝试解释我是如何导致此错误的,我将尝试提供我编写的代码的精简版本。

class Level
{
private:
    Room _startRoom;
    vector<vector<Room>> _rooms;
};

class Room
{
public:
    Room *North;
    Room *East;
    Room *South;
    Room *West;
};

我有一个名为 Level 的类,这是一个在向量中包含一个向量的类,以便能够整齐地打印出彼此相邻的房间。不是每个房间都是连接的,所以我给了房间的方向属性,用于与其他房间的连接。但是当我尝试通过设置 _rooms[y][x].South 和 _rooms[y+1][x] 来生成房间之间的连接时。我收到错误消息:'不存在从“房间”到“房间 *”的合适转换函数'。

有人可以澄清为什么我会收到此错误消息吗?所有帮助将不胜感激。

4

1 回答 1

0

该表达式_rooms[y + 1][x]是一个Room实例,而不是指向房间的指针。要获得指向它的指针,您需要使用地址操作符&

_rooms[y][x].South = &_rooms[y+1][x];

在一个不相关的注释上:你记得在你的Level对象中填充向量吗?

于 2016-10-21T16:56:11.503 回答