考虑:
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是不同的变量,但我真的不关心; 该常量用于代码的可读性。我想使用静态常量,因为就名称冲突而言,这比使用宏或全局方法更安全。
MYYA
斯蒂芬大帝
相关分类