トップページ > 記事閲覧
独自クラスを用いてvector配列を使いたい
名前:たないち 日時: 2020/09/05 23:18

初心者です。 タイトルの通り、独自クラスを用いてvector配列を作成したいです。 ですがビルドをすると error C2039: 'ID': 'std::vector<event,std::allocator<_Ty>>' のメンバーではありません。 等のエラーが出てしまいます。 ネットで調べても僕にはわかりませんでした。 どなたかわかる方がいましたらご教授宜しくお願いします。 #include "DxLib.h" #include <iostream> #include <string> #include <fstream> #include <wchar.h> #include <sstream> #include <vector> using namespace std; enum Enum_MapNumber { MAP_1, MAP_2, MP_MAX }mnh;//map number hennsuu //向き class direction { public: char up = 0; char right = 0; char down = 0; char left = 0; }; //イベントモードで使用するクラス class event { public: int ID = -1; char e_type = -1; char e_entity = -1; class direction d; enum Enum_MapNumber mnh; string str = "あいうえおかきくけ\nこさしすせそ";//会話文、コメント char item = -1; char other = -1; int center_event = 0; }; int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK); //ウィンドウモード変更,初期化,裏画面設定 fstream io("test2.txt", ios::out); if (!io) { cout << "test2.txtが開けません"; return 1; } vector<event> e_map[2]; string::size_type strlen; io.write((char*)&e_map[0].ID, sizeof(e_map[0].ID)); io.write((char*)&e_map[0].e_type, sizeof(e_map[0].e_type)); io.write((char*)&e_map[0].e_entity, sizeof(e_map[0].e_entity)); io.write((char*)&e_map[0].d, sizeof(e_map[0].d)); io.write((char*)&e_map[0].mnh, sizeof(enum Enum_MapNumber)); strlen = e_map[0].str.size(); io.write((const char*)&strlen, sizeof(strlen));//文字列のサイズを入力する io.write(e_map[0].str.c_str(), strlen); io.write((char*)&e_map[0].item, sizeof(e_map[0].item)); io.write((char*)&e_map[0].other, sizeof(e_map[0].other)); io.write((char*)&e_map[0].center_event, sizeof(e_map[0].center_event)); io.close(); io.open("test2.txt", ios::in); if (!io) { cout << "test2.txtが開けません"; return 1; } char cstr[10000]; io.read((char*)&e_map[0].ID, sizeof(e_map[0].ID)); io.read((char*)&e_map[0].e_type, sizeof(e_map[0].e_type)); io.read((char*)&e_map[0].e_entity, sizeof(e_map[0].e_entity)); io.read((char*)&e_map[0].d, sizeof(e_map[0].d)); io.read((char*)&e_map[0].mnh, sizeof(enum Enum_MapNumber)); io.read((char*)&strlen, sizeof(strlen));//文字列のサイズを入力する io.read(&e_map[0].str[0], strlen); io.read((char*)&e_map[0].item, sizeof(e_map[0].item)); io.read((char*)&e_map[0].other, sizeof(e_map[0].other)); io.read((char*)&e_map[0].center_event, sizeof(e_map[0].center_event)); io.close(); printfDx("%d\n",e_map[0].ID); printfDx("%d\n", e_map[0].e_type); printfDx("%d\n", e_map[0].e_entity); printfDx("%d %d %d %d\n", e_map[0].d.up, e_map[0].d.right, e_map[0].d.down, e_map[0].d.left); //io.read((char*)&e_map[0].mnh, sizeof(enum Enum_MapNumber)); printfDx("%s\n", e_map[0].str.c_str()); printfDx("%d\n", e_map[0].item); printfDx("%d\n", e_map[0].other); printfDx("%d\n", e_map[0].center_event); ScreenFlip(); WaitKey(); return 0; }
メンテ

Page: 1 |

Re: 独自クラスを用いてvector配列を使いたい ( No.1 )
名前:管理人 日時:2020/09/06 00:04

vector<event> e_map[2]; ↑こちらの記述ですと、 『event の要素が二つある vector』 ではなく 『event の要素を扱う vector が二つの配列』 となってしまいます 『event の要素が二つある vector』 とする場合は[]ではなく()にする必要があります vector<event> e_map(2); よろしければお試しください m(_ _)m
メンテ
Re: 独自クラスを用いてvector配列を使いたい ( No.2 )
名前:たないち(解決) 日時:2020/09/06 14:56

うおおおおおお こんな単純な事だったとは!! 1日粘ってたんですが、全然気づきませんでした。 そこら辺をもう少し勉強しようと思います。 管理人さん、どうもありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存