解決済み: http://pastebin.com/seEaALZh
IDでアイテム情報を取得できるシンプルなアイテムシステムを作成しようとしていました。アイテムIDはランダムと言ってよいので、配列を使用することはできません。宣言された項目を変数として使用したいのですが、その ID で項目情報をすばやく見つけたいと考えています。私が見つけた唯一の方法は stl マップです。
だから私はこの簡単なコードを持っています:
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; }
そして、何らかの理由でプログラムがクラッシュします。クラスの初期化時にクラスデータをマップに正しく挿入する方法は?