CArrayの使い方


VC  2008-09-08 20:14:46  No: 68969

VC++で下記のような構造体を宣言したいのですが、ビルドすると、下記の<出力エラー>が出てしまいます。
CArrayの構造体のなかで、CArrayの変数を使用する事はできないのでしょうか?
ちなみに、CArray<char> data;をCByteArray data;としても同じようなエラーが出力されました。
struct ListData{  
  int        index;  // 登録番号
  int          cycle;  // サイクル番号
  CArray<char> data;  // データ
};
CArray<ListData>  m_ListData;  // リストデータ

<出力エラー>
1>C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\afxtempl.h(272) : error C2248: 'CObject::operator =' : private メンバ (クラス 'CObject' で宣言されている) にアクセスできません。
1>        C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\afx.h(554) : 'CObject::operator =' の宣言を確認してください。
1>        C:\Program Files\Microsoft Visual Studio 8\VC\atlmfc\include\afx.h(524) : 'CObject' の宣言を確認してください。
1>        コンパイラでのこの診断により関数 'CArray<TYPE> &CArray<TYPE>::operator =(const CArray<TYPE> &)' が生成されました。
1>        with
1>        [
1>            TYPE=char
1>        ]


通行人  2008-09-08 21:11:21  No: 68970

CArray(の親クラスCObject)には、コピーコンストラクタがなく、
praivateなoperator =()を暗黙に使おうとしているってエラーです。

解決方法としては、
(1) ListData構造体で、コピーコンストラクタや
    publicなoperator =()を定義する。
(2) CArrayの派生クラス(MyArray)をつくり、
    その中でコピーコンストラクタやpublicな
    operator =()を定義し、ListData構造体で
    MyArray<char> data;として使う。
のどちらかですね。


VC  2008-09-09 00:10:39  No: 68971

ご回答いただき、ありがとうございます。
(1)もしくは(2)の方法で検討してみたいと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加