はじめまして。C++初心者といいます。
構造体の配列にデータを格納したいのですが、データが格納されません。以下にソースの一部を記しますが、すべての変数にデータが格納されません。
[cppファイル]
void InfoMgr::setInfo()
{
strInfo[0].sAction = "TEST";
strInfo[1].sAction = "TEST";
strInfo[2].sAction = "TEST";
strInfo[3].sAction = "TEST";
strInfo[4].sAction = "TEST";
strInfo[5].sAction = "TEST";
strInfo[6].sAction = "TEST";
strInfo[7].sAction = "TEST";
}
[hファイル]
typedef struct {
CString sAction;
}struct_INFO;
class InfoMgr
{
public:
struct_INFO strInfo[8];
void setInfo();
};
以上になります。普通なら格納されて当たり前なのですが、原因がわかりません。どなたか教えてくれませんでしょうか?
[開発環境]
Windows XP
Visual Stadio .Net C++
プロジェクトは「Win32コンソール」
よろしくお願いいたします。
↓ちゃんと動いてますケド…
#include <iostream>
#include <afxwin.h>
typedef struct {
CString sAction;
}struct_INFO;
class InfoMgr
{
public:
struct_INFO strInfo[8];
void setInfo();
};
void InfoMgr::setInfo()
{
strInfo[0].sAction = "TEST";
strInfo[1].sAction = "TEST";
strInfo[2].sAction = "TEST";
strInfo[3].sAction = "TEST";
strInfo[4].sAction = "TEST";
strInfo[5].sAction = "TEST";
strInfo[6].sAction = "TEST";
strInfo[7].sAction = "TEST";
}
int main() {
InfoMgr mgr;
mgr.setInfo();
for ( int i = 0; i < 8; ++i ) {
std::cout << static_cast<const char*>(mgr.strInfo[i].sAction) << std::endl;
}
return 0;
}
構造体とクラスを混同しています。
こうするなら、構造体のことを頭から抜いて、MFC&クラス一本でいったほうがいいと思います。
最初のうちは、構造体とMFCの違いは、structと書くか、classと書くか、だけだと割り切っていいです。
書き込みも読み出しもちょ〜〜〜早いですよ。
くぐったら、
http://homepage3.nifty.com/mitui707/VisualC/VCmakeclass.html/
というのがありました。
謝謝。
ヨッパで、意味不明でした。
*********************************************
最初のうちは、構造体とクラスの違いは、structと書くか、classと書くか、だけだと割り切っていいです。
そのまま簡単にファイルに書き込めるし、書き込みも読み出しもちょ〜〜〜早いですよ。
…やっぱり意味不明なんですけど。
> そのまま簡単にファイルに書き込めるし、書き込みも読み出しもちょ〜〜〜早いですよ。
なにが? struct と class が同じものならどっちが速いも遅いもないだろに。
私にゃ、質問者がクラスと構造体を混同してないように見えるがなぁ
んで
>普通なら格納されて当たり前なのですが、原因がわかりません。どなたか教えてくれませんでしょうか?
格納されてないと判断したのはどういった状況で?
どこかでブレイクして確認したのなら、その確認位置とか。
その位置までにsetInfo()はちゃんと呼び出しているのかどうかとか。
setInfo()をコンストラクタと勘違いしているのではないでしょうか?
で、InfoMgrのインスタンスを作成したが、setInfo()が呼ばれていないので、
作成したインスタンスの内容をウォッチしても、値が設定されていないとか。
だとするとナンセンス・コールっすね。
電気屋に出張修理頼んだら差込が抜けてた、みたいな。