我有一些代码,其中需要前向声明一个模板类(或者至少,前向声明会让事情变得更容易...)。我写了一个简化版本的代码,以便在这里展示:
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上编译。