我需要創建一個類實例的指針,並且程序在編譯時不知道要創建多少個指針。 對於刪除,我正在考慮將指針存儲在向量中,然後逐個刪除它們。 智能指針的使用是否更清晰? 如果一個人不想使用智能指針,這個矢量的使用會被認爲是乾淨的嗎?刪除指針向量
最小代碼:
#include <vector>
using namespace std;
class Foo {
public:
Foo();
};
Foo::Foo(){}
void createFooVector(int nb, std::vector<Foo*> &v){
for(int i=0;i<nb;i++){
Foo* f = new Foo();
v.push_back(f);
}
}
int main(int argc, char *argv[]){
std::vector<Foo*> v;
createFooVector(5,v);
while (!v.empty()){
Foo* f = v.back();
v.pop_back();
delete f;
}
}
你真的需要一個指針的容器嗎?你不能將你的'Foo'對象存儲爲值('std :: vector')?另外,如果'createFooVector'返回一個新的向量而不是修改一個給定的參數,它不會更清楚嗎? –
2013-04-11 07:18:55
@LucTouraille我使用指針,因爲這個原因:http://stackoverflow.com/questions/15471193/vector-of-virtual-class-are-pointers-the-clean-way-to-go ...這不可能可以在我在這裏展示的代碼中看到,儘量保持它最小 – Vince 2013-04-12 00:10:52