L
lokchan
i want to create a vector of pointer s.t. it can handle new and delete
but also have std::vector interface
can i implement by partial specialization and inherence like follow ?
#include <vector>
#include <algorithm>
template <typename T>
struct delete_ptr {
void operator() (T * p) {
delete p;
}
};
template<typename T>
class auto_vector<T *> : public std::vector<T *> {
public:
typedef std::vector<T *> Base;
~auto_vector() {
clear();
}
void clear() {
std::for_each(begin(), end(), delete_ptr<T>());
Base::clear();
}
void push_back(const T *p) {
T* tmp = new T(*p)
Base:
ush_back(tmp);
}
};
but also have std::vector interface
can i implement by partial specialization and inherence like follow ?
#include <vector>
#include <algorithm>
template <typename T>
struct delete_ptr {
void operator() (T * p) {
delete p;
}
};
template<typename T>
class auto_vector<T *> : public std::vector<T *> {
public:
typedef std::vector<T *> Base;
~auto_vector() {
clear();
}
void clear() {
std::for_each(begin(), end(), delete_ptr<T>());
Base::clear();
}
void push_back(const T *p) {
T* tmp = new T(*p)
Base:
}
};