Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
pi_X_el
Заблокирован
#1

Ошибка при возвращении ссылки из функции - C++

12.03.2013, 23:10. Просмотров 326. Ответов 3
Метки нет (Все метки)

Когда функция возвращает ссылку, то ее можно использовать с левой стороны от знака "=". Только не пойму почему не работает

\main.cpp|7|error: invalid initialization of reference of type 'int&' from expression of type 'const int'|


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cstdlib>
 
template <typename T>
T &GetMax(const T &a, const T &b)
{
    return (a>b) ? (a) : (b);
}
 
int main()
{
    int a=5, b=3;
 
    GetMax(a, b) = 0;
 
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2013, 23:10     Ошибка при возвращении ссылки из функции
Посмотрите здесь:

C++ Ошибка при объявлении функции класса
-1.#IND при возвращении значения функции C++
C++ Ошибка при компиляции виртуальные функции
C++ ошибка при составлении функции
C++ Ошибка при вызове функции
GCC ошибка при вызове функции C++
Ошибка bad ptr при возвращении занчения из функции C++
C++ Конструктор копии при возвращении объекта
Конструктор копии: при возвращении объекта ошибка памяти C++
C++ Ошибка при открытии файла в функции
Ошибка при использовании дружественной функции C++
C++ Ошибка "iterator not dereferencable" при использовании ссылки

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xSCJx
22 / 19 / 1
Регистрация: 24.12.2012
Сообщений: 435
12.03.2013, 23:20     Ошибка при возвращении ссылки из функции #2
Цитата Сообщение от pi_X_el Посмотреть сообщение
Когда функция возвращает ссылку, то ее можно использовать с левой стороны от знака "=".
C++
1
2
int& preinc(int& x) { ++x; return x; }
preinc(y) = 5; // то же, что и ++y, y = 5
pi_X_el, твой код конечно полная чушь, но убери в параметрах функции const, и он заработает.
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
12.03.2013, 23:21     Ошибка при возвращении ссылки из функции #3
C++
1
2
3
4
5
template <typename T>
T &GetMax(T &a, T &b)
{
    return (a>b) ? (a) : (b);
}
Не?
Kuzia domovenok
1889 / 1744 / 117
Регистрация: 25.03.2012
Сообщений: 5,917
Записей в блоге: 1
12.03.2013, 23:24     Ошибка при возвращении ссылки из функции #4
Очевидно, проблема в слове const.
Если бы компилятор не запретил тебе возвращать эту ссылку,
это означало бы, что он разрешает тебе изменять константы, вот так
C++
1
2
3
const int a=2;
const int b=0;
GetMax(a, b) = 0;//попытка изменить константу a
а разрешать менять константы нельзя.

Добавлено через 1 минуту

Не по теме:

OhMyGodSoLong, Эй, а почему ты не похоже как-то на прежнего OhMyGodSoLong???

Yandex
Объявления
12.03.2013, 23:24     Ошибка при возвращении ссылки из функции
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru