質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
C++/CLI

C++/CLIは、.NET Frameworkの共通言語基盤であるCLI向けにC++を拡張したプログラム言語です。前身のC++マネージ拡張と比較するとシンプルで分かりやすい構文になっており、高い可読性を持ちます。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

解決済

クラスメンバのリストへの追加がしたい

wide_shallow_
wide_shallow_

総合スコア5

C++/CLI

C++/CLIは、.NET Frameworkの共通言語基盤であるCLI向けにC++を拡張したプログラム言語です。前身のC++マネージ拡張と比較するとシンプルで分かりやすい構文になっており、高い可読性を持ちます。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。

1回答

0評価

0クリップ

303閲覧

投稿2022/03/11 04:06

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プロジェクト

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

C++/CLI

C++/CLIは、.NET Frameworkの共通言語基盤であるCLI向けにC++を拡張したプログラム言語です。前身のC++マネージ拡張と比較するとシンプルで分かりやすい構文になっており、高い可読性を持ちます。

Visual C++

Microsoft Visual C++はWindowsのCとC++の統合開発環境(IDE)であり、コンパイラやデバッガを含んでいます。