我有一些代码需要前向声明一个模板类(或者至少,前向声明会使事情对我来说变得更容易。 ..)。我已经写了我有这么一个问题的简化版本,我可以在这里显示出来:正向声明模板类时的“未定义模板的隐式实例化”
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上进行编译。