以下是一个在向量中删除指针的函数对象的建议
struct DeleteFromVector
{
template <class T>
void operator() ( T* ptr) const
{
delete ptr;
}
};
使用时需调用
std::for_each(aVec.begin(), aVec.end(), DeleteFromVector());
我曾经写过类似的东西(虽然最初没有结构体内模板的巧妙移动):
struct DeleteObj
{
template<typename ObjType>
inline void operator() (ObjType obj)
{
delete obj;
obj = NULL;
};
};
在调试器中逐步执行似乎是有效的,即obj被识别为指针,没有崩溃。
我有点困惑为什么两者都起作用,并且也想听听对使用const和inline的意见。
谢谢, 罗伯特
obj = NULL
只影响局部参数,在参数上没有任何影响。此外,在删除指针后将其设置为空指针被认为是不良风格,因为它倾向于隐藏设计问题而不是解决它们。 - fredoverflow