CArrayStringを含む構造体の配列化 – プログラミング – Home

CArrayStringを含む構造体の...
 
通知
すべてクリア

[解決済] CArrayStringを含む構造体の配列化


める
 める
(@める)
ゲスト
結合: 21年前
投稿: 62
Topic starter  

お世話になります。環境はVC6 SP5 Win2Kです。

と、ある構造体(AAA)がありまして、
これを複数束ねた構造体(BBB)を作りました。
このBBBの構造体の個数が可変となる為、
CArrayを使って動的配列にしようとしている次第です。

typedef struct AAA_
{
  int      Check;
  CStringArray FileNames;
}AAA;

typedef struct BBB_
{
  int nIndex;
  AAA A_Data;
  AAA B_Data;
  AAA C_Data;
}BBB;

CArray <BBB, BBB&> Array;
BBB SendData;

この定義でビルドをすると
「'operator =' が、指定されたクラスに定義されていません。」
と表示されるのですが、どこをどう修正すれば
使えるようになるか解りません。どなたかご教授下さい。


引用未解決
トピックタグ
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

VC6 SP6 XP2000 の環境で、上記コードを試したところ、
全角スペースがある他は、エラーが出ませんでしたが。


返信引用
たいちう
 たいちう
(@たいちう)
ゲスト
結合: 23年前
投稿: 662
 

XP2000って何だよ orz...
XP Pro SP2のことです。


返信引用
める
 める
(@める)
ゲスト
結合: 21年前
投稿: 62
Topic starter  

あ。すみません。
抜けてました。
定義だけだとうまくいきます。

SendDataに値を入れて、

Array.push_back(SendData);

とやるとこのラインでエラーが出ます。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>Array.push_back(SendData);
CArrayにpush_backというメソッドはないようですけど。

[MSDN]CArray
http://msdn2.microsoft.com/en-us/library/7y7b8fx3(VS.80).aspx


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

push_backは、C++テンプレートの関数のメゾットみたいですね。


返信引用
yoh2
 yoh2
(@yoh2)
ゲスト
結合: 18年前
投稿: 70
 

今手元に実験できる環境がないので想像になりますが、
下リンクの内容が原因じゃありませんか?(バージョン違いのリンクですが)

http://msdn2.microsoft.com/ja-jp/library/ccb3dh5c(vs.80).aspx

CStringArrayはCObjectから派生していますし、operator=のオーバーライドもされて
いなかったような記憶があります。
クラスAAA_でoperator=を定義して、FileNamesの要素をひとつひとつコピーするように
すれば解決するのではないでしょうか。

別解: CStringArrayではなくstd::vector<CString>を使う。MFC使ったりSTL使ったりでは
ポリシーが一貫しなくなってしまいますが。

# しかし、unavailableを「定義されていない」と訳すか、MSよ……


返信引用
める
 める
(@める)
ゲスト
結合: 21年前
投稿: 62
Topic starter  

おはようございます。
お返事が遅くなりました。
皆さんレスありがとうございます。

>Array.push_back(SendData);
CArrayにpush_backというメソッドはないようですけど。
すみません。STLを試してみたりと色々やっていたので・・・
それはそれで別のエラーが出てしまいますね。

どうにも煩わしいようなので、
yoh2さんの別解のようにSTLを使うように
しようと思います。

typedef struct AAA_
{
  int      Check;
  vector<CString> vct_FileNames;
}AAA;

typedef struct BBB_
{
  int nIndex;
  AAA A_Data;
  AAA B_Data;
  AAA C_Data;
}BBB;

vector <BBB> ArrayBBB;
BBB bbb;

ArrayBBB.push_back(bbb);

こんな感じでしょうか。
取り合えずは上手くいってるようです。
お手数お掛けしてすみません。
ありがとうございました。m(__)m


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました