【发布时间】:2013-07-13 21:01:33
【问题描述】:
已解决:http://pastebin.com/seEaALZh
我试图创建简单的物品系统,我可以通过它的 id 获取物品信息。我不能使用数组,因为项目 ID 可以说是随机的。我想使用声明的项目作为变量,我想通过它的 id 快速找到任何项目信息。我找到的唯一方法是stl map。
所以我有这个简单的代码:
-
main.h
#include <iostream> #include <map> enum { weapon, ammo }; class c_items { bool operator()(const c_items& l, const c_items& r) const { return (l.id < r.id); } public: c_items(void){}; c_items(int id, char name[], int type); char *name; int type; int id; }; extern std::map<int,c_items> Stuff; c_items::c_items(int id, char name[], int type) : id(id), type(type), name(name) { Stuff[id] = c_items(id, name, type); } const c_items brass_knuckles (546, "Brass knuckles", weapon), golf_club (2165, "Gold club", weapon); -
main.cpp
#include "main.h" std::map<int,c_items> Stuff; using namespace std; int main() { // cout << Stuff[2165].name.data(); return 1; }
由于某种原因程序崩溃了。如何在类初始化时正确地将类数据插入到地图中?
【问题讨论】:
-
你的代码是递归的?当你创建一个项目时,它会创建一个项目等等......崩溃!!!
-
感谢 alex 发现这个问题。
标签: c++ class map constructor initialization