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

VisualStudio2005

帰国後の1週間を乗り切った。 バカンスモードの体からビジネスモードに切り替えるのは、 なかなか厳しかったが、この1週間で徐々に慣れてきた。 夢のような南国リゾートとは違い、現実世界は厳しい。 さて、V …

no image

MultiByte と WideChar

文字コードは、やっかいなもの。 以下の2つの関数は、知ってるようでよく知らなかったって話。 MultiByteToWideChar( ) WideCharToMultiByte( ) UNIコードの変 …

no image

プロパティシート

ソフト開発の話です。 私はVC6でソフトを作ってます。 ダイアログボックスの作りこみは、おもしろいものです。 プログラマーにとっては、デザイン的センスを問われる分野ですかね。 プロパティシートとは、ペ …

no image

受託開発

パッケージソフトの開発にメンバーとして関わって10年、そこそこの売り上げを継続でき、よい結果を出していると思います。ここ最近、少しジリ貧なので、ちょっと厳しいですけど、それはともかく... 近頃、受託 …

no image

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

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