新しいテンプレートテンプレートクラスの演算子をオーバーロードしたいですか?しかし、何か間違ったことが起こる。テンプレートクラスのオーバーロードに関する新しい演算子
はファイル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"
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>;
}
私は、ファイルをの.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
が、私はたまたまテンプレート .Whyを使用しない場合はすべてが、OKですか? 誰かが私を助けてくれることを願っています。
あなたの答えをありがとうが、私はそれがコンパイラには見えない理由を知りたい。原則、何か*答え*、*キーワード*について何か教えてください。歓迎です。 – Witcher42
説明付きのリンクが追加されました。キーワード: "コンパイル単位"とC++ /テンプレートにより、より多くの情報を見つけることができます。 – Mat
ありがとうございました非常にあなたが追加したリンクは私の問題を解決することができます。 – Witcher42