0

我正在编写一个程序,我需要在其中声明一个可以接受各种原始类型(例如doubleor )float并将其转换为int.

我的程序只int使用int.

4

2 回答 2

5

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

struct Foo
{
  template <typename T>
  explicit Foo(const T& x) :i(x) {}
 private:
  int i;
};
于 2013-10-08T19:33:22.887 回答
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);
}
于 2013-10-08T19:40:20.547 回答