我正在做一个程序,以通过引用测试交换几件事。
我设法使代码中的前两个功能正常工作,但无法更改第三个功能中的char *
。
我认为问题在于它是一个常数,仅对read-only
有效
那就是错误告诉我的内容,但是如何以这种方式使用它呢?
代码如下:
#include <iostream>
using namespace std;
void swapping(int &x, int &y)
{
int temp =x;
x=y;
y=temp;
}
void swapping(float &x, float &y)
{
float temp=x;
x=y;
y=temp;
}
void swapping(const char *&x,const char *&y)
{
int help = *x;
(*x)=(*y);
(*y)=help;
} // swap char pointers
int main(void) {
int a = 7, b = 15;
float x = 3.5, y = 9.2;
const char *str1 = "One";
const char *str2 = "Two";
cout << "a=" << a << ", b=" << b << endl;
cout << "x=" << x << ", y=" << y << endl;
cout << "str1=" << str1 << ", str2=" << str2 << endl;
swapping(a, b);
swapping(x, y);
swapping(str1, str2);
cout << "\n";
cout << "a=" << a << ", b=" << b << endl;
cout << "x=" << x << ", y=" << y << endl;
cout << "str1=" << str1 << ", str2=" << str2 << endl;
return 0;
}
答案 0 :(得分:1)
如评论中所建议:
void swapping(const char*& x, const char*& y)
{
auto t = x;
x = y;
y = t;
}
现在您应该考虑使用模板:
template<typename Type>
void swapping(Type& a, Type& b)
{
auto t = a;
a = b;
b = t;
}