Вы должны использовать std::swap
(расположенный в любом заголовке <algorithm>
или <utility>
) вместо того, чтобы добавить собственные:
std::swap(str1, str2);
Кроме того, следует рассмотреть возможность использования std::string
вместо const char*
в целом:
std::string str1 = "Apple";
std::string str2 = "Potato";
конечно алгоритм std::swap
все равно будет работать нормально.
И, наконец, ни один void
в списке аргументов main
и return 0.0
не нужны в C++.
Вот код повторно с вышеуказанными советами:
#include <algorithm>
#include <string>
#include <iostream>
int main() {
std::string str1 = "Apple";
std::string str2 = "Potato";
std::swap(str1, str2);
}
и here «s живой пример.
В ответ г-н Cthulhu вниз здесь, я постараюсь ответить на этот вопрос более четко.
Ваша ошибка вызвана тем, что с помощью разыменования указателей типа const char*
вы фактически получаете выражение типа const char&
которое, очевидно, несовместимо с типом, выраженным в вашей swap
функции. Вот правильный вызов функции:
swap(str1, str2);
Но опять же, почему тиражирование код std::swap
? (Это риторический вопрос, в случае, если вам интересно, кастрированный баран, чтобы пометить это как «не ответ»)
'swap (str1, str2);' – BoBTFish
по-прежнему получают ту же ошибку – jason
@ user2678614: Нет, вы этого не сделаете. –