如何解决C ++如何在类型不同的两个变量之间建立交换函数
我想创建交换函数,该函数可以将两种不同类型的变量作为参数。 例如)
int a = 2;
double b = 1.1
swap(a,b)//wish a = 1.1,b = 2
template<typename T,typename U>
void swap(T& x,U& y)//it doesn't work due to automatic type cast
{
U temp = x;
x = y;
y = temp;
std::cout << "swap" << std::endl;
}
解决方法
您不能。由于a
的类型为int
,因此它不能保存1.1
之类的值。与javascript等动态类型语言不同,在C ++等静态类型语言中,变量的类型无法更改。
您不能这样做,因为不能更改对象类型。将把double截断为一个int,将整数保存为double。但是,您可以按以下方式使用std::variant
s
#include <variant>
#include <iostream>
void swapDoubleVariantByIntOne(std::variant<int,double>& intVar,std::variant<int,double>& doubleVar)
{
auto temp = std::get<double>(doubleVar);
doubleVar = std::get<int>(intVar);
intVar = temp;
std::cout << "swap" << std::endl;
}
int main(){
std::variant<int,double> a = 2;
std::variant<int,double> b = 1.1;
swapDoubleVariantByIntOne(a,b);
std::cout << "a: " << std::get<double>(a)<< " b: " << std::get<int>(b) ;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。