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

невозможно преобразовать параметр 1 из "int" в "int *&" - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.87
cite
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 9
26.07.2013, 11:18     невозможно преобразовать параметр 1 из "int" в "int *&" #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
using namespace std;
 
void Func1(int *n)
{
    cout << *n << " = " << *n << endl;
}
 
void Func2(int &n)
{
    cout << &n << " = " << n << endl;
}
 
void Func3(int *&n)
{
    cout << &n << " = " << n << endl;
}
 
 
int main()
{
    int n;
 
    Func1(&n);
    Func2(n);
    Func3(n);  // Func3: невозможно преобразовать параметр 1 из "int" в "int *&"
    
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2013, 11:18     невозможно преобразовать параметр 1 из "int" в "int *&"
Посмотрите здесь:

Ошибка 6 error C2664: strtok: невозможно преобразовать параметр 1 из "const char *" в "char *" C++
error C2664: Display: невозможно преобразовать параметр 1 из 'int [5]' в 'int" C++
невозможно преобразовать параметр 1 из "const char [8]" в "LPCWSTR" C++
C++ Что делать с ошибкой: C2440: инициализация: невозможно преобразовать "int **" в "int *"
error C2664: CWnd::MessageBoxW: невозможно преобразовать параметр 2 из "long" в "LPCTSTR" C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
26.07.2013, 11:24     невозможно преобразовать параметр 1 из "int" в "int *&" #2
Видимо Func3(&n);
cite
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 9
26.07.2013, 11:32  [ТС]     невозможно преобразовать параметр 1 из "int" в "int *&" #3
PHP
1
Func3(&n);  // Func3: невозможно преобразовать параметр 1 из "int *" в "int *&"
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
26.07.2013, 11:53     невозможно преобразовать параметр 1 из "int" в "int *&" #4
cite, испытываешь передачу переменной в функцию?

Добавлено через 3 минуты
14 строчка, так нельзя делать, передаешь или ссылку или указатель, но ни как не одновременно одно и тоже.

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

void Func3(int *n)

или

void Func3(int &n)

но НЕ

void Func3(int *&n)
cite
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 9
26.07.2013, 11:56  [ТС]     невозможно преобразовать параметр 1 из "int" в "int *&" #5
Цитата Сообщение от VLK Посмотреть сообщение
cite, испытываешь передачу переменной в функцию?
функции изучаю и немного тренируюсь)

видел программу и там функция принимает ссылку на указатель
только не понимаю как это
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
26.07.2013, 12:01     невозможно преобразовать параметр 1 из "int" в "int *&" #6
cсылку на указатель передавать можно, это необходимо что бы внутри можно было изменить этот входной указатель, только скорее всего надо писать вот так
C++
1
&*а
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
26.07.2013, 12:01     невозможно преобразовать параметр 1 из "int" в "int *&" #7
Цитата Сообщение от VLK Посмотреть сообщение
14 строчка, так нельзя делать, передаешь или ссылку или указатель, но ни как не одновременно одно и тоже.
Чем тебе не понравилась ссылка на указатель?
___
Для Func3 нужен объект ссылку на который будем передавать.
C++
1
2
int *pn = &n;
Func3(pn);
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
26.07.2013, 12:02     невозможно преобразовать параметр 1 из "int" в "int *&" #8
На, держи в подарок, только вчера себе сделал, что то вроде памятки:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream> 
 
#define rus setlocale(LC_ALL,"")
#define pause system("pause");
 
 
void fun(int rhs)
{
/* Переданное значение является копией var имеет другой адрес */
std::cout << "rhs: " << rhs << " &rhs: " << &rhs << "\n\n";
}
 
void link(int &rhs)
{
/* Переданное значение является ссылкой на var, любые изменения rhs изменят и var
rhs и var имеют один и тот же адрес в ОП */
std::cout << "rhs: " << rhs << " &rhs: " << &rhs << "\n\n";
}
 
void ptr(int *rhs)
{
/* Переданная из функции main ссылка превращается в указатель,
в указатели хранится адрес на var, любое изменение *rhs изменит и var */
std::cout << "rhs: " << rhs << " &rhs: " << &rhs << " *rhs: " << *rhs << "\n\n";
}
 
 
 
int main()
{
rus;
 
int var = 1;
 
std::cout << "В функции main, значение и адрес: \n";
std::cout << "var: " << var << " &var: " << &var << "\n\n";
 
std::cout << "Передаем в функцию: fun(int rhs) - fun(var)\n"; 
fun(var);
/* передача осуществляется только в таком виде, т.е. 
перед var не получится поставить * или & */
 
std::cout << "Передаем в функцию по ссылке: link(int &rhs) - link(var)\n";
link(var);
/* передача осуществляется только в таком виде, т.е. 
перед var не получится поставить * или & */
 
std::cout << "Передаем в функцию по ссылке: ptr(int *rhs) - ptr(&var)\n";
ptr(&var);
/* передача осуществляется только в таком виде, т.е. 
перед var должен обязательно стоять &, во всех других случаях - ошибка */
 
pause;
return 0;
}
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
26.07.2013, 12:05     невозможно преобразовать параметр 1 из "int" в "int *&" #9
пример
C++
1
2
3
4
5
6
7
8
9
10
void CreateArray(int &*p, int n)
{
p = new int[n];
}
 
int main()
{
int * a;
CreateArray(a, 5);
}
Добавлено через 1 минуту
и это кстати
C++
1
void Func3(int *&n)
указатель на ссылку а не ссылка на указатель
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
26.07.2013, 12:15     невозможно преобразовать параметр 1 из "int" в "int *&" #10
Цитата Сообщение от aLarman Посмотреть сообщение
указатель на ссылку а не ссылка на указатель
Нет, именно ссылка на указатель. Пруф
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
26.07.2013, 12:18     невозможно преобразовать параметр 1 из "int" в "int *&" #11
aLarman, это как раз ссылка на указатель. Указателя на ссылку небывает.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
26.07.2013, 12:18     невозможно преобразовать параметр 1 из "int" в "int *&" #12
А указатель на ссылку - вообще недопустимый тип данных.
aLarman
26.07.2013, 12:22
  #13

Не по теме:

что то я теряю сноровку хД это void Func3(int *&n) ссылка на указатель

Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
26.07.2013, 12:24     невозможно преобразовать параметр 1 из "int" в "int *&" #14
aLarman,
C++
1
2
3
4
int & * ppp;
//( int & ) * ppp получается указатель на тип int&, то есть на ссылку
int * & ppp;
//( int * ) & ppp получается ссылка на тип int*, то есть на указатель
cite
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 9
26.07.2013, 12:32  [ТС]     невозможно преобразовать параметр 1 из "int" в "int *&" #15
спасибо сейчас повнимательнее почитаю что вы написали и постараюсь все это понять.
ссылки и указатели немного знаю, а вот ссылка на указатель это уже сложная для меня тема
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
26.07.2013, 12:38     невозможно преобразовать параметр 1 из "int" в "int *&" #16
Цитата Сообщение от cite Посмотреть сообщение
а вот ссылка на указатель это уже сложная для меня тема
Ничего сложного. Есть указатель, есть ссылка на объект. А ссылка на указатель - это обычная ссылка, которая ссылается на объект, являющийся указателем.
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
26.07.2013, 12:40     невозможно преобразовать параметр 1 из "int" в "int *&" #17
Цитата Сообщение от cite Посмотреть сообщение
ссылки и указатели немного знаю

На вот тебе еще, что еще лучше знал:

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include <iostream> 
 
#define rus setlocale(LC_ALL,"")
#define pause system("pause");
 
 
int main()
{
rus;
 
/* Переменная состоит из двух вещей, адрес в ОП и значение хранящиеся по эту адресу, 
например: значение 2, хранящиеся по адресу 50000 */
 
int variable = 2;
std::cout << "********************\n";
std::cout << "Переменная, variable = 2\n";
std::cout << "Переменная, обращение через variable: " << variable << "\n - показывает значение хранящиеся в этой переменной\n";
std::cout << "Переменная, обращение через &variable: " << &variable << "\n - показывает адрес переменной в ОП\n\n";
 
int &link = variable;
std::cout << "********************\n";
std::cout << "Ссылка link, является ссылкой на переменную variable которая фигурировала ранее\n";
std::cout << "Ссылка, обращение через link: " <<  link << "\n - показывает значение переменной (variable), на которую ссылается данная ссылка\n";
std::cout << "Ссылка, обращение через &link: " << &link << "\n - показывает адрес переменной (variable), на которую ссылается данная ссылка\n\n";
 
/* В отличии от переменной указатель состоит из трех вещей, первая, адрес в ОП, 
в котором хранится НЕ значение, а другой адрес в ОП, в котором хранится значение, 
например: указатель pointer, указывает на адрес в ОП 60000, по которому хранится 
другой адрес - 70000, в котором непосредственно хранится значение 3,
т.е. 3 хранится по адресу 70000, а по адресу 60000 хранится адрес 70000 */
 
int *pointer = new int(3);
std::cout << "********************\n";
std::cout << "Указатель, pointer = 3\n";
std::cout << "Указатель, обращение через pointer: " <<  pointer << "\n - показывает адрес хранящийся в указателе\n";
std::cout << "Указатель, обращение через &pointer: " << &pointer << "\n - показывает адрес самого указателя\n";
std::cout << "Переменная, обращение через *pointer: " << *pointer << "\n - показывает значение хранящиеся в указателе\n\n";
 
/* PS конечно многие скажут! как?! еще есть имя (переменной, указателя ссылки) 
а так же тип хранимых данных (int, double, char), 
ну есть и есть, они в данном примере не нужны */
 
pause;
return 0;
}
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,343
26.07.2013, 12:46     невозможно преобразовать параметр 1 из "int" в "int *&" #18
VLK, я вот прочитал, но нихрена не понял ^_^ Некоторые фразы двусмысленны...
VLK
 Аватар для VLK
192 / 161 / 12
Регистрация: 05.05.2013
Сообщений: 1,221
26.07.2013, 12:55     невозможно преобразовать параметр 1 из "int" в "int *&" #19
Цитата Сообщение от nonedark2008 Посмотреть сообщение
VLK, я вот прочитал, но нихрена не понял ^_^ Некоторые фразы двусмысленны...
Ну как можно не понять то, что ты знаешь

Добавлено через 1 минуту
А вообще скажи что именно не так, я поправлю текст, моя цель - что бы каждый мог с первого раза понять то, что я написал без вопросов.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2013, 13:06     невозможно преобразовать параметр 1 из "int" в "int *&"
Еще ссылки по теме:

C++ Error C2440: <function-style-cast>: невозможно преобразовать "unsigned int" в "std::bitset<_Bits>"
C++ Error C2664: RegisterClassW: невозможно преобразовать параметр 1 из "WNDCLASSEX *" в "const WNDCLASSW *"
Error C2664: Client::First: невозможно преобразовать параметр 1 из "std::queue<_Ty>" в "std::queue<_Ty> &" C++

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

Или воспользуйтесь поиском по форуму:
cite
0 / 0 / 0
Регистрация: 26.07.2013
Сообщений: 9
26.07.2013, 13:06  [ТС]     невозможно преобразовать параметр 1 из "int" в "int *&" #20
VLK, как узнать адрес в памяти где находится сама ссылка? это из вашей программы

C++
1
2
3
int &link =  variable;
std::cout << "link = " << link << std::endl;
std::cout << "&link = " << &link << std::endl; // тут будет выведен адрес переменной variable
Yandex
Объявления
26.07.2013, 13:06     невозможно преобразовать параметр 1 из "int" в "int *&"
Ответ Создать тему
Опции темы

Текущее время: 08:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru