我不确定我应该如何正确地为一个结构初始化地图。
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没有已知的转换;'|
答案 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) {}
对于你的构造函数。