С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

12.03.2013, 23:10. Просмотров 355. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.03.2013, 23:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка при возвращении ссылки из функции (C++):

Ошибка bad ptr при возвращении занчения из функции - C++
Помогите по функции, не возвращает значения, вот как объявлена функция и вот как пытаюсь вызвать чтобы получить значение этой самой функции...

-1.#IND при возвращении значения функции - C++
#include&lt;iostream&gt; using namespace std; float res=0; float number() { char c=cin.get(); if(c&gt;='0' &amp;&amp; c&lt;='9') { ...

Конструктор копии: при возвращении объекта ошибка памяти - C++
Реализация класса: #include&quot;Class_Taxi.h&quot; #include&lt;fstream&gt; #include&lt;conio.h&gt; using namespace std; Zakaz::Zakaz() { ...

Конструктор копии при возвращении объекта - C++
main(): #include&quot;Class_Taxi.h&quot; #include&lt;vld.h&gt; #include&lt;iostream&gt; #include&lt;locale.h&gt; #define MAX 15 using namespace std; ...

При передачи указателя на обьект ошибка,а при передаче ссылки на указатель нет. Почему? - C++
Hi All! class SomeObj { public: int x; }

Ошибка "iterator not dereferencable" при использовании ссылки - C++
Всем привет. Без ссылки все работает, с ссылкой ошибка: &quot;iterator not dereferencable&quot;. С ссылкой: void func(vector&lt;string&gt;&amp; arr) ...

3
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, и он заработает.
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 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);
}
Не?
0
Kuzia domovenok
2060 / 1905 / 174
Регистрация: 25.03.2012
Сообщений: 6,565
Записей в блоге: 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???

1
12.03.2013, 23:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.03.2013, 23:24
Привет! Вот еще темы с ответами:

Почему в setnamedisc нужно использовать char * для установки значения, а при возвращении значения тип метода должен быть char* ? - C++
Вопрос такой, почему в методе setnamedisc нужно использовать char *s для установки значения, а при возвращении значения в методе...

Ошибка при вызове функции - C++
Ошибка в строке 90, при пошаговом выполнении она появляется при вызове функции, до захода в нее, хотя список сформирован правильно, т.к. до...

ошибка при составлении функции - C++
Я пытаюсь создать программу, при помощи функции выделяющую из двумерного массива одномерный, который будет состоять из элементов старого,...

Ошибка при вызове функции - C++
Добрый день! Есть функция по расчету детерминанта int _det(int size,double **arr,double &amp;det) { int i,j,k; det=1; double b; ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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