C++中正确的Map初始化

Proper Map initialization in C++

本文关键字:Map 初始化 C++      更新时间:2023-10-16

我不确定应该如何正确初始化结构的映射。

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

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

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

注:候选人为:|c: \mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_map.h|264|注意:std::map&lt_键、_Tp、_Compare、_Alloc>&std::映射&lt_键,_Tp,_Compare,_Alloc>::运算符=(const std::映射<_Key,_Tp、_Compare、_Alloc>&)[其中_Key=char;_Tp=boardTile*;_Compare=std::less;_Alloc=std::分配器>]|c: \mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_map.h|264|注意:参数1从"std::map*"到"const-std::map&"没有已知的转换|

map<char,boardTile*> neighbors;

不需要动态分配,所以放弃这个:

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

我的意思是neighbors不是指针,它只是一个映射。boardTile*是一个指针,您需要new

neighbors不是指针,因此

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

尝试将指针分配给不正确的CCD_ 5。你可以使用

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

为您的构造函数。