我的意思是,我在 C++ 中有一个函数,我想将钱存入一个帐户。这个函数应该能够接受 float 、 double 、整数等,因为这些都是输入的有效形式,因为我只需要一个数字来存入。
因此,我声明:
template <typename type>
void Deposit(type t) {...}
现在我遇到的唯一问题是:从理论上讲,这个类的用户可能会向这个函数传递一个字符或字符串,并且这样做会产生意想不到的后果。我将如何将类型限制为整数、 float 、 double 和短整型?是否可以在函数定义中限制它,以便其他人在使用此函数编程时得到编译器/链接器错误,而不必使用 try{...} catch(...){...}
?
最佳答案
您需要什么 std::is_arithmetic将模板类型限制为算术类型(整数或 float )。你可以像这样使用它
template <typename T, typename std::enable_if<std::is_arithmetic<T>::value>::type* = nullptr>
void Deposit(T t) {...}
关于C++ 将模板类型限制为数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44848011/