構造体の初期化の方法

[戻る]
クリリン 2002/01/28(月) 19:19:50
初歩的な質問ですいません。
下記で記したような構造体を宣言をし、データを代入、取得などは出来るのですが、

const int MAX = 50;

struct Data
{
  CString a;
  int     b;
  CString c;
  bool    d;
}temp [MAX];

データを代入する前に一度初期化を行いたいのですが、
データを初期化する事ができません。
HELPで「delete [] temp」で開放すると記述されていますが、
「配列の delete が定義されていません。配列は、ポインタに変換されます」
といった警告メッセージがでます。
どのように記述したら、初期化できるのでしょうか?
皆様、良い知恵をお貸しください。
よろしくお願いします。

sugar 2002/01/28(月) 19:39:01
deleteで領域を開放できるのは、new演算子で確保した領域です。
クリリンさんの宣言では、temp[MAX]をdeleteで開放することはできませんよ。

また、「データの初期化」は一般に、領域を'\0'で埋めることを指します。
deleteで領域を開放することとは意味が異なります。

sugar 2002/01/28(月) 19:41:26
すみません、肝心の話が抜けていました。

> データを代入する前に一度初期化を行いたいのですが、
>
ZeroMemory()というAPIがあります。

クリリン 2002/01/28(月) 19:59:07
[[解決]]
sugarさん、ありがとうございます。
よくよく考えたら、開放ではなく、初期化がしたかっただけなので、
ループを使って、初期化しないと、実データは初期化できないと何処かで聞きましたので、
そうする事にします。
本当に初歩的な質問ですいません。

古いスレッドには追加発言できません。