【发布时间】:2019-11-25 03:11:47
【问题描述】:
template<typename T>
class CommonBase
{
};
template<typename T>
class Base : public CommonBase<T>
{
protected:
bool flag;
};
template<>
class Base<int> : public CommonBase<int>
{
Base() {flag = false;}
};
它会导致“flag 未在命名空间中声明”的错误。我哪里做错了?
【问题讨论】:
-
当 T 是 int 时,编译器选择特化,即使用的 Base 的整个实现。对于所有其他类型,它使用主模板。它们不会合并,只是其中之一。
标签: c++ class templates inheritance template-specialization