如何使用原始指针将对象分配给向量中对象的 属性?

How to assign an object to a property of an object in a vector with raw pointers?

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

现在那些原始指针给我带来了一些麻烦。这些指针给了我错误:'no suitable conversion function from "Room" to "Room *" exists'.

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

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

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

我有一个名为 Level 的 class,这是一个 class,在一个向量中有一个向量,以便能够整齐地打印出彼此相邻的房间。不是每个房间都相连,所以我给了房间方向属性,用于与其他房间的连接。但是,当我尝试通过将 _rooms[y][x].South 设置为 _rooms[y+1][x] 来生成房间之间的连接时。我收到错误:'no suitable conversion function from "Room" to "Room *" exists'.

有人可以解释为什么我会收到此错误消息吗?我们将不胜感激。

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

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

关于一个不相关的说明:您记得在 Level 对象中填充向量吗?