我有一些代碼需要前向聲明一個模板類(或者至少,前向聲明會使事情對我來說變得更容易。 ..)。我已經寫了我有這麼一個問題的簡化版本,我可以在這裏顯示出來:正向聲明模板類時的「未定義模板的隱式實例化」
template<bool>
class MyTemplateClass;
int main(int argc, char* argv[])
{
MyTemplateClass<false> myTemp; // error here
myTemp.GetTheValue();
return 0;
}
template<bool bShouldMult>
class MyTemplateClass
{
int m_myint;
float m_myfloat;
public:
MyTemplateClass() : m_myint(5), m_myfloat(3.0f) {}
float GetTheValue()
{
return m_myint * (bShouldMult ? m_myfloat : 1.0f);
}
};
我在註釋行得到的錯誤是:
Error - implicit instantiation of undefined template 'MyTemplateClass<false>'
什麼其他細節我需要包含在MyTemplateClass的前向聲明中嗎?由於錯誤不是來自下一行,我假設它不是由於該方法未定義的事實。我使用的編譯器是LLVM/CLang,我正在Mac上進行編譯。