考虑:
template <typename T>
class Base
{
public:
static const bool ZEROFILL = true;
static const bool NO_ZEROFILL = false;
}
template <typename T>
class Derived : public Base<T>
{
public:
Derived( bool initZero = NO_ZEROFILL ); // NO_ZEROFILL is not visible
~Derived();
}
我无法使用 GCC g++ 3.4.4 (cygwin) 编译它。
在将这些转换为类模板之前,它们是非泛型的,派生类能够看到基类的静态成员。这是 C++ 规范要求中的可见性损失还是我需要采用的语法更改?
我知道每个实例化Base<T>
都会有它自己的静态成员“ ZEROFILL
”和“ NO_ZEROFILL
”,它们是不同的变量Base<float>::ZEROFILL
,Base<double>::ZEROFILL
但我真的不在乎;常量用于代码的可读性。我想使用静态常量,因为它在名称冲突方面比宏或全局更安全。