2012-04-22 2 views
0

Я должен реализовать Vector<MyObject*> по телефону AnotherClass::objectCollections(). Поэтому здесь тип возврата должен быть Vector<MyObject*>. Также мне нужно вернуть каждый MyObject* из другой функции, которая могла бы вернуть MyObject*. Чтобы он мог заполнять Вектор. Я новичок в программировании на C++. Я хочу знать более безопасный способ реализовать это без сбоев, даже если динамически созданный векторный массив имеет большое количество, и это будет очень полезно, если вы предоставите адекватный пример или ссылку с необходимыми типами возврата.Вектор создания объектов-указателей

+3

Я бы настоятельно рекомендовал использовать интеллектуальные указатели в вашем векторе, но только если вам абсолютно нужны указатели там, в первую очередь. – chris

+0

Это будет так приятно, если вы приведете пример. Спасибо .. –

+0

Посмотрите на 'std :: unique_ptr',' std :: shared_ptr' и 'std :: weak_ptr', или если у вас нет C++ 11, умный указатель boost будет, вероятно, следующей лучшей опцией , – chris

ответ

0

Хорошо, вот образец. Я заполняю вектор несколькими указателями на int. Затем я удаляю их один за другим и, наконец, очищаю вектор. Если я woudnt вручную вызовет оператор delete для каждого элемента до Vector.clear(), произойдет утечка памяти.

std::vector<int*> Vector; 
    for (int i = 0; i < 10; i++) 
     Vector.push_back(new int(i)); 

    std::vector<int*>::const_iterator It; 

    for (It = Vector.begin(); It != Vector.end(); It++) 
    { 
     int* n = *It; 
     if (n) delete n; 
    } 
    Vector.clear(); 
+0

Спасибо. Из этого я могу пойти дальше в своем коде. –

Смежные вопросы