如何将对象赋值给具有原始指针的矢量中的对象的属性

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

本文关键字:对象 属性 指针 原始 赋值      更新时间:2023-10-16

这个问题可能是一个新手问题,因为我刚刚开始使用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]。南侧有_rooms[y+1][x]。我得到了错误:'没有合适的转换函数从"房间"到"房间*"存在'。

有人能澄清为什么我得到这个错误信息?

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

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

在一个无关的注意事项上:您记得在您的Level对象中填充向量吗?