2013-12-18 46 views
3

的什么,我试图做的简化示例的方式:有没有使用显式实例的类型来设置成员变量

如果我有一个类:

template <typename T> 
class Foo 
{ 
public: 
    Foo() : numericType(false){}; 

private: 
    bool numericType; 
} 

而且我希望它设置如果T是数字类型,则awesomeType为true,否则为false。我可以使用显式实例化来做到这一点吗?我想将numericType设置为true的每种类型都被显式实例化并将其设置为true,而所有其他类型都未显式实例化,因此保持false?

如果不是,你会怎么做呢?

侧注意:由于我的英特尔编译器,我无法使用C++ 11。

+1

请看'' –

+0

请详细说明你想要做什么显式/隐式事情 –

+0

@DieterLücking我完全想将numericType的值更改为(int,float和double)的基本数值类型为true的值, 。所以我希望这些类型具有不同的构造函数。 – user1364540

回答

1

这大部分是在std::is_arithmetic中完成的。

我刚刚看到你不允许使用C++ 11 ... 尝试提升类型特征is_arithmetic

标准“偷”这一个从提振。

4

您可以使用现有类型特征来识别算术类型:从<type_traits>开始,布尔值std::is_arithmetic<T>::value指示T是否为算术类型。

由于这是的属性,而不是这种类型的任何特殊对象的,你不应该让这个布尔非静态数据成员。充其量,它应该是一个静态的,不变的数据成员,但是你可能不需要在需要时直接打扰和使用这个特征。

+0

太棒了,谢谢,但同样只是C++ 11。 – user1364540

+2

@ user1364540:自己写这个很简单。让我知道你是否需要帮助。 –

+1

谢谢,我相信我可以弄明白。学习机会和所有... – user1364540

相关问题