연산자를 템플릿 클래스에 오버로드하려고합니다. 그러나 뭔가 잘못된 것이 있습니다.템플릿 클래스의 오버로드 new 연산자
파일 test4.h, 나는 new 연산자를 구현하는 클래스
#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"
int main(){
lei<size_t> *pl;
pl = new lei<size_t>;
}
#include "test4.h"
template <class T>
void* lei<T>::operator new(size_t size){
std::cout << size << std::endl;
}
MAIN.CPP 나는 파일을 .O하는 CPP 파일을 컴파일합니다. 모든 것은 괜찮습니다. 하지만 그들이 실행 파일에 링크 할 때 오류가 발생합니다
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
하지만이 발생 템플릿 왜 라니를 사용하지 않는 경우 모든 것이 OK인가? 누군가가 나를 도울 수 있기를 바랍니다.
답장을 보내 주셔서 감사합니다.하지만 컴파일러가 보이지 않는 이유를 알고 싶습니다. 원리, 무언가 * 대답 * 또는 핵심어 *에 대해 뭔가 말해줘. 오신 것을 환영합니다. – Witcher42
설명이있는 링크가 추가되었습니다. 키워드 : "컴파일 단위"및 C++/템플릿을 통해 더 많은 정보를 얻을 수 있습니다. – Mat
대단히 고맙습니다. 추가 한 링크로 인해 제 문제가 해결 될 수 있습니다. – Witcher42