1

このクラスと構造体があり、配列上のすべての構造体が別の構造体に接続されています(配列のすべての要素のリンクリスト構造体)。ところで、これは私のコードのサンプルにすぎません。他にエラーがないと仮定します。

class DATA;
class myclass
{
     public:
         myclass();

         mystruct* addDATA(DATA *d);

     private:
         mystruct* array;
};
struct mystruct
{
    DATA     * data;
    mystruct * next ;

};

コンストラクターでこれを試しています

 mystruct::mystruct()
 {
     mystruct* array = new mystruct[10];
     for(int i = 0; i < 10; i++)
         array[i] = NULL; 
 }

これにより、予期しない(少なくとも私にとっては)エラーが発生します。このエラーは少しばかげているのではないでしょうか。NULLを指すポインターを作成しています。

no match for ‘operator=’ in ‘*(array + ((unsigned int)(((unsigned int)i) * 8u))) = 0’

そして、私がしようとしたときも。

while(this->array[i] != NULL){
    // do some arrangements on the array..

}

これでも同じエラーが発生します。ポインタをNULLに一致させると、このエラーが発生するのはなぜですか。または、NULLかどうかを確認します。今朝から苦労して、* * ingソリューションが見つかりませんでした:/配列の型は「mystruct」です。しかし、他には何もありません、これは問題ですか?または、array [i]はポインタなどではありませんか?

4

2 に答える 2

2

mystructのポインタの配列ではなく、 の配列がありますmystruct。本当にポインターの配列が必要な場合は、次のように割り当てます。

mystruct** array = new mystruct*[10];
于 2012-10-29T23:48:02.057 に答える
2

いいえ、ポインターの配列を作成していません。構造体の配列を作成しています。の各要素は でarrayはありmystructませんmystruct*mystructaを nullに設定しても意味がありません。

于 2012-10-29T23:48:36.417 に答える