1
我從模板類繼承有一些問題。下面的代碼不編譯,示出這樣的錯誤:main.cpp : undefined reference to OBJ1<1000>::method()
未定義對...的引用:從模板類繼承
parent.h
template <int nb>
class PARENT
{
PARENT() {};
~PARENT() {};
virtual void method() = 0;
enum { nb_ = nb };
};
obj1.h
#include "parent.h"
template <int nb>
class OBJ1 : public PARENT<nb>
{
virtual void method();
};
obj1.cpp
#include "obj1.h"
template <int nb>
void OBJ1<nb>::method()
{
//code
}
的main.cpp
#include "obj1.h"
int main()
{
OBJ1<1000> toto;
toto.method();
}
我在哪裏錯了?
的代碼仍然不能編譯,但是你固定的一個錯誤。 :) 謝謝。 – Patouf
當您像這裏所做的那樣定義類模板的方法時,最好將該行外定義標記爲「inline」。如果沒有'inline',如果多個源文件對同一個模板參數使用該函數,則會導致違反一個定義規則。 –
@DavidHammen模板沒有例外嗎?另見http://stackoverflow.com/q/3694899/1025391 – moooeeeep