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

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

Войти
Регистрация
Восстановить пароль
 
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
#1

Функция с параметрами типа указатель на символ и ссылка на целое - C++

01.04.2012, 21:12. Просмотров 752. Ответов 9
Метки нет (Все метки)

не могу разобратся с указателем на функцию
хотя вроде понял , но так как понял не работает
задание:
Составить описание : Функция с параметрами типа указатель на символ и
ссылка на целое, невозращающая значение:
функция с параметром , имеющим тип такого указателя:
функция , возращающая такой указатель:
Напишите определение функции , у которой параметр и возращаемое
значение имеют тип такого указателя. Подсказка: используйте typedef.

я написал:
C++
1
2
3
4
5
6
void func_1(char*,int&);
void (*f_p)(char*,int&);
f_p = &func_1;
void func_with_p(f_p* p);
f_p func_r();
f_p func_2(f_p* p);
мне отвечает:
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(5): error C4430: missing type
specifier - int assumed. Note: C++ does not support default-int
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(5): error C2373: 'f_p' :
redefinition; different type modifiers
1> c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(4) : see declaration of 'f_p'
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(5): error C2440: 'initializing' :
cannot convert from 'void (__cdecl *)(char *,int &)' to 'int'
1> There is no context in which this conversion is possible
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(6): error C2065: 'p' : undeclared
identifier
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(6): error C2182: 'func_with_p' :
illegal use of type 'void'
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(6): fatal error C1903: unable to
recover from previous error(s); stopping compilation
попробовал сделать через typedef :
C++
1
2
3
4
5
6
void func_1(char*,int&);
typedef void (*f_p)(char*,int&);
f_p = &func_1;
void func_with_p(f_p* p);
f_p func_r();
f_p func_2(f_p* p);
мне отвечает:
1>c:\users\oleynik\documents\visual studio
2010\projects\study\study\lesson_4.h(5): error C2513: 'void (__cdecl
*)(char *,int &)' : no variable declared before '='
можете еще обьяснить что происходит с f_p когда я использую для нее typedef.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2012, 21:12     Функция с параметрами типа указатель на символ и ссылка на целое
Посмотрите здесь:
C++ Используя указатель на переменную типа string, удалить последний символ этой переменной
C++ Дружественная функция шаблон и ошибка "Ссылка на неразрешенный внешний символ"
C++ Шаблонная функция в простом классе и ошибка "Ссылка на неразрешенный внешний символ"
C++ Написать объявление функции, возвращающую целое число и принимающую указатель на целое число
C++ Преобразовать указатель одного типа в указатель другого.
C++ Ссылка на указатель на указатель
C++ Ссылка на указатель
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
01.04.2012, 21:14     Функция с параметрами типа указатель на символ и ссылка на целое #2
Можно программу целиком увидеть? Потому, что все ошибки явно возникают из-за неуместного употребления имён.
C
1
2
3
4
5
6
7
8
9
10
11
12
void func_1(char*,int&);
int main(){
int x=0;
void (f_p*)(char*, int&);
fp=func_1;
f_p("Hello", x);
return 0;
}
 
void func_1(char* str, int& n){
 
}
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
01.04.2012, 21:17  [ТС]     Функция с параметрами типа указатель на символ и ссылка на целое #3
Программу писал на visual c++ 10
могу скинуть весь проэкт, но по этой части это все
я изучаю книгу и по ней делаю задания, в том проэкте все мои задания сделаные
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
01.04.2012, 21:22     Функция с параметрами типа указатель на символ и ссылка на целое #4
C++
1
2
3
4
5
6
void func_1(char*,int&);
typedef void (*func_t)(char*,int&);
func_t f_p = &func_1;
void func_with_p(func_t p);
func_t func_r();
func_t func_2(func_t p);
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
01.04.2012, 21:26     Функция с параметрами типа указатель на символ и ссылка на целое #5
Ааа туплю туплю звезду же в определении надо впереди ставить!!
C++
1
2
3
4
int x=0;
    int (*f_p)(int);
    fp=func_1;
    f_p(10);
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
01.04.2012, 21:49  [ТС]     Функция с параметрами типа указатель на символ и ссылка на целое #6
Можете обьяснить разницу

C++
1
2
typedef void (*func_t)(char*,int&);
void (*func_t)(char*,int&);
что происходит когда используется typedef
в обоих случаях funс_t будет указатель?
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
01.04.2012, 21:59     Функция с параметрами типа указатель на символ и ссылка на целое #7
Цитата Сообщение от balrak Посмотреть сообщение
Можете обьяснить разницу

C++
1
2
typedef void (*func_t)(char*,int&);
void (*func_t)(char*,int&);
что происходит когда используется typedef
в обоих случаях funс_t будет указатель?
typedef определяет тип, второй вариант просто объявляет и определяет переменную
retmas
Жарю без масла
859 / 741 / 164
Регистрация: 13.01.2012
Сообщений: 1,694
01.04.2012, 22:00     Функция с параметрами типа указатель на символ и ссылка на целое #8
Цитата Сообщение от balrak Посмотреть сообщение
в обоих случаях funс_t будет указатель?
только во 2м случае: func_t - переменная типа указатель на ф-ю.
в 1м же случае func_t - имя типа указателя на ф-ю.
typedef вводит новое имя (синоним) для типа (не для переменной).
Kuzia domovenok
1890 / 1745 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
01.04.2012, 22:05     Функция с параметрами типа указатель на символ и ссылка на целое #9
Цитата Сообщение от balrak Посмотреть сообщение
что происходит когда используется typedef
в обоих случаях funс_t будет указатель?
При чём тут вообще тайпдеф? Сначала прочитайте что такое тайпдеф, потом применяйте.
Тайпдеф определяет новое название для существующего типа. При чём используется, словно мы хотим объявить переменную с таким названием.
То есть так void (*func_t)(char*,int&) ты объявил указатель на функцию t и можешь использовать его.
А так typedef void (*func_t)(char*,int&); ты объявил новый тип данных func_t
И можешь использовать его как обычное название типа
например
C++
1
2
3
int x, y, z;//три переменных типа инт
func_t a, b, c;//три указателя на функцию, принимающую char* и int&
void (*func_t2)(char*,int&);//один указатель на функцию
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2012, 22:54     Функция с параметрами типа указатель на символ и ссылка на целое
Еще ссылки по теме:
C++ Указатель и ссылка
C++ Указатель и ссылка
C++ Ссылка на указатель
Указатель и ссылка C++
C++ Ссылка на указатель

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

Или воспользуйтесь поиском по форуму:
balrak
6 / 6 / 1
Регистрация: 01.04.2012
Сообщений: 81
01.04.2012, 22:54  [ТС]     Функция с параметрами типа указатель на символ и ссылка на целое #10
Всем ограмное спасибо за помошь
Yandex
Объявления
01.04.2012, 22:54     Функция с параметрами типа указатель на символ и ссылка на целое
Ответ Создать тему
Опции темы

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