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

时间:2016-10-21 16:51:39

标签: c++ pointers vector raw-pointer

这个问题可能是一个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;

有人可以澄清我收到此错误消息的原因吗?所有帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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

关于不相关的说明:您是否记得填充Level对象中的向量?