Модификация "Const Char Pointers" в C ++ - PullRequest
0 голосов
/ 31 октября 2019

Я делаю программу для проверки обмена несколькими вещами по ссылке. Мне удалось заставить первые две функции в моем коде работать, но я не могу изменить 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;
}

1 Ответ

1 голос
/ 01 ноября 2019

Как предлагается в комментариях:

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;
}
...