C++ 多个模板中其中一个的模板特化
首先,请参阅 为什么只能在头文件中实现模板(阿里云社区地址)
为什么只能在头文件中实现模板(stackoverflow地址) 现在,您的问题并非来自上述问题,但是,您仍应需要考虑是否要在cpp文件中实现模板。 我怀疑你没有。
无论如何,您要问的问题是您试图定义一个尚未模板特化的专门类模板的方法。
下面有两个选择。 - 您可以特化类模板,重复整个过程
template
class MyComputationClass
{
numberType a = 1;
numberType b = 2;
numberType compute();
};
您可以使用所有通用代码创建类模板,并派生类模板仅包含您需要特化的部分在C++ 17 中你可以使用 if constexpr :
template
numberType MyComputationClass::compute()
{
if constexpr (increateByOne)
return a + b + 1;
else
return a + b;
}
在C ++ 20中,您可以使用require子句:
template
class MyComputationClass
{
numberType a = 1;
numberType b = 2;
numberType compute() requires increaseByOne
{
return a + b + 1;
};
numberType compute() requires (!increaseByOne)
{
return a + b;
};
};
回答来源:stackoverflow
赞0
踩0