Я хочу перегрузить новый оператор в шаблонном классе. Но что-то не так происходит.
В файле test4.h я определил класс
#include <stddef.h>
#include <iostream>
template <class T>
class lei{
public:
T me;
static void* operator new(size_t size);
};
test4.cpp реализовать новый оператор.
#include "test4.h"
template <class T>
void* lei<T>::operator new(size_t size){
std::cout << size << std::endl;
}
main.cpp
#include "test4.h"
int main(){
lei<size_t> *pl;
pl = new lei<size_t>;
}
Я компилирую файлы cpp в файл .o. Все отлично.
Но когда я связываю их с исполняемым файлом, возникает ошибка:
main.o: In function `main':
main.c:(.text+0x19): undefined reference to `lei<unsigned int>::operator new(unsigned int)'
collect2: ld returned 1 exit status
но все в порядке, если я не использую шаблон . Почему это происходит?
Итак, я надеюсь, что кто-то может мне помочь.