我正在编写一个程序,我需要在其中声明一个可以接受各种原始类型(例如double
or )float
并将其转换为int
.
我的程序只int
使用int
.
我正在编写一个程序,我需要在其中声明一个可以接受各种原始类型(例如double
or )float
并将其转换为int
.
我的程序只int
使用int
.
您可以使用模板构造函数:
struct Foo
{
template <typename T>
explicit Foo(const T& x) :i(x) {}
private:
int i;
};
如果类型无法像这样转换为 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);
}