c++言語を勉強しているものです。windowsで動くシフト作成ソフトをvisualC++で作ろうとしているのですが、従業員のデータの管理がうまくいきません。
全体的な流れは作って楽しむプログラミング visual C++2019 超入門 という本を参考にしています。
https://shop.nikkeibp.co.jp/front/commodity/0000/P86510/
実装はこちらのサイトのやり方を参考にしています。
http://marupeke296.com/DXCLS_AutomationOfSaveLoad.html
そこで、
// 保存する変数の位置を指定
DATARECORD CPlayer::m_gDataRecord[] =
{
{TYPE_LOCAL, 0, 4} // m_iLevel
{TYPE_LOCAL, 4, 4} // m_bFlag
};
ここに相当する部分を書こうとしているのですが、m_gDataRecord[]をリストのポインタで宣言してしまっている(配列や普通のリストで書くとはまた違うエラーが出ました。) 為か、push_back で変数を追加しようと思っても
「式にはクラス型を使用する必要がありますが、型"std::list<DATARECORD,std::allocator<DATARECORD>>が使用されています」
というエラーメッセージが出てしまいます。
自分の中では、リストも固定長のアドレスなので、参照を使えばオブジェクトのオフセットからデータにアクセスすることができ、このセーブ方法を応用できると思ったのですが、どうもうまくいきません。
自分で調べてもよくわかりませんでした。独学でやっているので、今やっている事が正しいのかもよくわからず、五里霧中です。解決する方法があればご教示お願い致します。また、違うもっといい方法があればそれも教えていただきたいです。 よろしくお願いします。
以下、コードとバージョン情報になります。
------------------datastruct.h----------------------------------------------------------------------
#ifndef ING_DATASTRUCT
#define ING_DATASTRUCT
struct DATARECORD
{
char type; // データタイプ
int offset; // オフセット値
int size; // サイズ
};
#endif
------------------ datasv.cpp-----------------------------------------------------------------------
#ifndef INGD_DATASV
#define INGD_DATASV
#include<vector>
#include<list>
#include<string>
#include"datastruct.h"
using namespace std;
ref class datasv
{
public:
int ID; wstring* KanjiName; //kanji wstring* KataName; //katakana int Slevel; // skill level int perW; //how many attending per week vector<vector<vector<int >>>* attendable = &vector<vector<vector<int>>>(7, vector<vector<int>>(24, vector<int>(4))); //3D vector Attendable time table int Chour; //continuable hour int Cminutes; //continuable hour static list<DATARECORD>* m_gDataRecord; // 保存するデータ配列 int dataad() { *m_gDataRecord.push_back('a', 1, 2); //ここです。 return 0; }
};
#endif
環境
visual studio 2022
テンプレート
空のCLRプロジェクト
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/22 10:23