Вот небольшая функция, которую я пытаюсь написать, чтобы отслеживать динамические выделения, которые я использую в своих функциях (надоело писать delete [] все время).
template <class T>
T* snew(int size, vector<T*> list)
{
T* pointer = new T[size];
list.push_back(pointer);
return pointer;
}
vector<float*> list;
float* myfloat1 = snew<float*>(HEIGHT*WIDTH,list);
float* myfloat2 = snew<float*>(HEIGHT*WIDTH,list);
float* myfloat3 = snew<float*>(HEIGHT*WIDTH,list);
Итак, когда мне нужно очистить память, я могу использовать:
template <class T>
void sdelete(vector<T*> list)
{
vector<T*>::iterator it;
for (it = list.begin(); it != list.end(); ++it){
delete [] *it
*it = NULL
}
}
как это:
sdelete<float*>(list);
Когда я пытаюсь скомпилировать, я получаю:
cannot convert parameter 2 from 'std::vector<_Ty>' to 'std::vector<_Ty,_Ax>'
Не уверен, что это значит. Спасибо за понимание:)