如何创建一个接受任何基本类型的构造函数并转换为c ++中的int?

时间:2013-10-08 19:30:15

标签: c++ constructor int primitive

我正在创建一个程序,我需要声明一个构造函数,它可以接受各种基本类型,例如doublefloat,并将其转换为int

我的程序只使用int,所以我需要在构造函数中接受任何原始数据类型并将其转换为int

2 个答案:

答案 0 :(得分:5)

您可以使用模板构造函数:

struct Foo
{
  template <typename T>
  explicit Foo(const T& x) :i(x) {}
 private:
  int i;
};

答案 1 :(得分:1)

如果类型无法转换为int,则可以使用SFINAE导致编译错误...

template<class T>
MyConstructor(const T& x, typename std::enable_if<std::is_convertible<T, int>::value>::type* = nullptr)
{
    int myint = static_cast<int>(x);
}