2

これを知っておくべきなのはわかっていますが、手遅れで、私の脳はピースをまとめられません.

これは、質問が得られるのと同じくらい簡単です。

私は struct を持っていitemます。その項目タイプへのポインターの配列へのポインターを作成したいと考えています。

例えば。

struct item {
    int data;
    string moreData;
};

ArrayPointerそのポイントを配列にしたい。その配列の各要素にアイテムへのポインターを含めたいと思います。

C ++でこれを行うにはどうすればよいですか、またはより具体的には、参照解除演算子をいくつ配置する必要がありますか? 私は基本的な (単一の間接参照) ポインターを宣言する方法を知っており、それらの使用法にかなり精通しています。

可能であれば、次の手順に関する情報が必要です。

を宣言しArrayPointerます。

ArrayPointerサイズ s で を初期化しています。

ArrayPointerwithの各要素を初期化しnew itemます。

例えば:

for(int i = 0; i < s; i++)
    ArrayPointer[i] = // a new item

誰かが回答を投稿するとすぐに、鼻を骨折するほど強く顔をしかめるつもりです。

4

3 に答える 3

1

私が正しく理解しているなら、あなたはこのようなものが必要です

item **ArrayPointer = new item *[s];

for ( int i = 0; i < s; i++ )
{
    ArrayPointer[i] = new item; { i, "More Data" };
}

または

item **ArrayPointer = new item *[s];

for ( int i = 0; i < s; i++ )
{
    ArrayPointer[i] = new item;
    ArrayPointer[i]->data = i;
    ArrayPointer[i]->moreData = "More Data";
}

割り当てられたメモリを解放するには、逆の順序で行うことができます

for ( int i = 0; i < s; i++ )
{
    delete ArrayPointer[i];
}

delete [] ArrayPointer;

それ以外の場合、s が定数の場合は、単純にポインターの配列を宣言できます。例えば

item * ArrayPointer[s];
for ( int i = 0; i < s; i++ )
{
    ArrayPointer[i]->data = i;
    ArrayPointer[i]->moreData = "More Data";
}
于 2014-11-23T05:32:46.000 に答える
0

file.h

struct item {
    int data;
    string moreData;
};

item ** array;

ファイル.cpp

array = new item*[s];

for(int i = 0; i < s; i++)
{
    array[i] = new item;
    array[i]->data = 10;
    array[i]->moreData = "data";
}
于 2014-11-23T05:36:02.003 に答える