如何使用原始指针将对象分配给向量中对象的 属性?
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
对象中填充向量吗?
这个问题可能是一个新手问题,因为我刚刚开始使用 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
对象中填充向量吗?