我想在模板類中重載新的操作符。但有些事情發生錯誤。關於模板類中的新操作符過載錯誤
在文件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
但一切就OK了,如果我不使用模板。爲什麼出現這種情況? 所以,我希望有人能幫助我。
感謝您的回答,但我想知道它爲什麼對編譯器不可見。告訴我有關該原則的一些情況,歡迎任何*答案*或*關鍵字*。 – Witcher42
添加了解釋的鏈接。關鍵詞:「編譯單元」和C++ /模板應該讓你找到更多。 – Mat
非常感謝您添加的鏈接可以解決我的問題。 – Witcher42