3

このフォーラムでポインターのベクトルについて多くのことを読みましたが、ベクトルに格納されているポインターを削除するという考えを理解するのに苦労しています。以下は私の質問です:

オブジェクトの配列を動的に作成するとします

CPoint* dynamic_array;
dynamic_array = new CPoint[30714];

ポインターのベクトルを介して、これらの値を別のクラスのオブジェクトで使用する必要があります

vector<CPoint*> vector_of_pointers;

次に、次を使用して、の要素をdynamic_array別のクラスのオブジェクトに分割します

Class B{
    vector<CPoint*> vector_of_pointers;
public:
    void function(CPoint* a){
        if (some condition){
            vector_of_pointers.push_back(a);
        }
};

どこaからのオブジェクトへのポインタは常にどこにありますかdynamic_array

オブジェクトの必要性がなくなったら、最初に作成した dynamic_array を削除する予定です。

delete[] dynamic_array;

これを行った後でも、ベクトル内の各ポインターを削除する必要がありますか? 必要に応じて、デストラクタで実行できClass Bますか?

これが単純またはばかげた質問である場合は申し訳ありませんが、私は C++ の初心者であり、アプリケーションにはコンテナーを使用する必要があります。

4

4 に答える 4

4

元の質問に答えるには: いいえ、個々のオブジェクトを削除する必要はありませんCPoint(実際にはできません)。

vector<CPoint>しかし、実際のポイントへのポインターではなく、実際のポイントを保存するために使用した方がよいと私は信じています。

于 2013-08-14T12:36:09.330 に答える
3

格納するポインターは、既に命令と共に使用してvector<CPoint*>いるオブジェクトを指しているため、ベクトルに格納されている個々のポインターに命令を追加する必要はなく、追加する必要もありません。deleteddelete[] dynamic_arraydelete

于 2013-08-14T12:39:40.770 に答える