C++中正确的Map初始化
Proper Map initialization in C++
我不确定应该如何正确初始化结构的映射。
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<_键、_Tp、_Compare、_Alloc>&std::映射<_键,_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) {}
为您的构造函数。
相关文章:
- 使用通用值初始化 std::map,不重复
- 初始化 std::数组 of Eigen::Map
- std::map与谓词与初始化列表
- 当 map 是一个整数数组并且由 operator[] 创建时,它是否初始化其映射类型
- 如何修复"非聚合无法使用初始值设定项列表初始化" <map>
- C++仅在 std::map 中初始化密钥
- 将列表初始化的对插入到 std::map 中
- C++ 接受对抽象类的常量引用的构造函数无法初始化 std::map
- 如何在嵌套列表初始化中从map<><>中辨别向量?
- 初始化常量静态 std::map unique_ptr作为值
- 如何初始化 std::map<int, int> 键递增但值相同?
- 新的STD :: MAP条目如何仅通过键插入初始化
- 使用默认构造的值初始化 std::map
- STD :: MAP初始化列表构造函数
- 使用std::矢量进行std::map初始化
- C++中正确的Map初始化
- 使c++编译器优化到在map初始化时只调用构造函数一次
- c++ 0x 3d map初始化类似于php的关联数组
- Map初始化:目标代码比源代码大50倍
- 在map初始化列表中使用std::make_pair