CAD日記

AutoCAD,DXF,DWG,SXFなどCADのことから、仮想通貨や投資関係、PC関係、プログラミング、国内海外旅行情報など何でもござれ。@caddiary

ソフト開発

CArrayで配列の配列(ネスト)を実現する方法

投稿日:

CArrayで配列の配列(ネスト)を実現したいことがよくある。
シンプルにこんなことやると、ビルドエラーになる。

typedef struct {  // 構造体
CStringArray m_ary;
}S_TEST;
CArray<S_TEST,S_TEST> ary;
S_TEST test1;
test1.m_ary.Add(_T("a"));
test1.m_ary.Add(_T("b"));
ary2.Add(test1);
S_TEST test2;
test2.m_ary.Add(_T("c"));
test2.m_ary.Add(_T("d"));
ary2.Add(test2);

一方、こんなふうにするとうまくいく。

CArray<S_TEST*,S_TEST*> ary;
S_TEST* pTest1 = new S_TEST;
pTest1->m_ary.Add(_T("a"));
pTest1->m_ary.Add(_T("b"));
ary.Add(pTest1);
S_TEST* pTest2 = new S_TEST;
pTest2->m_ary.Add(_T("c"));
pTest2->m_ary.Add(_T("d"));
ary.Add(pTest2);

構造体定義をnewにしているだけのことだ。
以下のように、値を参照しても問題なかった。

CString msg;
for( int i=0; i<ary.GetSize(); i++ )
{
S_TEST* pTest = ary.GetAt(i);
for( int j=0; j<pTest->m_ary.GetSize(); j++ )
msg += pTest->m_ary.GetAt(j);
delete pTest;
}
AfxMessageBox( msg );  // abcdと出る

-ソフト開発
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

no image

簡単インストーラ

インストーラと言えば、Install Shield です。最新バージョンは11.0で価格は44万1千円。高いんです。高機能版(Premier Edition)で、多国語(全33ヶ国語)対応という代物だ …

no image

PDFiumでPDFを描画したりなんだりできるんだとさ

まずはこちらのネットニュースをご覧あれ。2014年に書かれたものでおもしろいことが書いてある。

no image

SE

妻に勧められて、この本を呼んでみました。 SEのフシギな生態―失敗談から学ぶ成功のための30ヶ条 作者: きたみ りゅうじ 出版社/メーカー: 幻冬舎 発売日: 2005/12 メディア: 文庫 一言 …

no image

プログラムっておもしろいなぁとつくづく思うなり

ここんところぜんぜんプログラムを書いてなくて仕事がつまんなくなってきたところに、トラブル対応があってプログラムをじっくりと書いてみた。いやはやおもしろい。余計な仕事が飛び込んでこない環境で、スピッツ聞 …

no image

軌道に乗ったか!?

 この11月の売り上げ本数が、10本の大台にのりました。私が最も力を入れているCAD関連ツールがです。喜ばしいことです。関係各位への感謝がつのります。  思えば半年前、あるユーザーの要望から始まったこ …