2012-04-22 143 views
0

我必须通过调用AnotherClass::objectCollections()来实现Vector<MyObject*>。所以这里的返回类型应该是Vector<MyObject*>。此外,我必须从可能返回MyObject*的另一个函数返回每个MyObject*。以便它可以填充矢量。我是C++核心编程的新手。我想知道更安全的方法来实现这一点而不会崩溃,即使动态创建的向量数组数量很大,如果您提供了足够的示例或链接所需的返回类型,它将非常有用。创建指针对象的向量

+3

我强烈建议在你的矢量中使用智能指针,但只有当你绝对需要指针在那里。 – chris 2012-04-22 15:03:22

+0

如果你提供一个例子,它会很好。谢谢.. – 2012-04-22 15:05:49

+0

看看'std :: unique_ptr','std :: shared_ptr'和'std :: weak_ptr',或者如果你没有C++ 11,boost的智能指针可能会成为下一个最佳选择。 – chris 2012-04-22 15:09:40

回答

0

好的,这里是一个示例。我用几个指针来填充矢量。然后我一个接一个地删除它们,最后清除这个向量。如果我在Vector.clear()之前手动调用每个元素上的delete操作符,则会泄漏内存。

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

谢谢。从这我可以进一步在我的代码。 – 2012-04-25 15:45:35