在C ++中正确映射初始化

时间:2015-12-18 20:12:04

标签: c++ dictionary

我不确定我应该如何正确地为一个结构初始化地图。

struct Tile
{
char character;
map<char,Tile*> neighbors;
Tile(char c)
{
        character = c;
        neighbors = new map<char,Tile*>();
    }
};

当我尝试初始化它时,我得到:

错误:'operator ='不匹配(操作数类型为'std :: map'和'std :: map *')

注意:候选人是:| c:\ mingw \ lib \ gcc \ mingw32 \ 4.8.1 \ include \ c ++ \ bits \ stl_map.h | 264 |注意:std :: map&lt; _Key,_Tp,_Compare,_ Alloc&gt;&amp; std :: map&lt; _Key,_Tp,_Compare,_ Alloc&gt; :: operator =(const std :: map&lt; _Key,_Tp,_Compare,_Alloc&gt;&amp;)[with _Key = char; _Tp = boardTile *; _Compare = std :: less; _Alloc = std :: allocator&gt;] | c:\ mingw \ lib \ gcc \ mingw32 \ 4.8.1 \ include \ c ++ \ bits \ stl_map.h | 264 |注意:从'std :: map *'到'const std :: map&amp;参数1没有已知的转换;'|

2 个答案:

答案 0 :(得分:0)

map<char,boardTile*> neighbors;

不会动态分配,因此请弃用:

neighbors = new map<char,boardTile*>();

我的意思是neighbors不是指针,它只是一张地图。 new需要boardTile*,这是一个指针。

答案 1 :(得分:0)

neighbors不是指针

neighbors = new map<char,boardTile*>();

尝试分配指向map<char,boardTile*>的指针,该指针不正确。你可以使用

Tile(char c) : character(c) {}

对于你的构造函数。