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

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

Войти
Регистрация
Восстановить пароль
 
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
#1

Указатель на функцию - C++

11.03.2011, 21:40. Просмотров 650. Ответов 10
Метки нет (Все метки)

подскажите пожалуйста в чём ошибка:
объявляю указатель
C++
1
int (analizator::*q)(char);
потом пытаюсь через него вызвать функцию
C++
1
2
3
4
5
6
cin>>buf;
        q=&analizator::q0;
        for (int i=0; i<strlen(buf); i++)
        {
            (*q)(buf[i]); //1
        }
выдаются такие ошибки в строке "1":
'*' : illegal on operands of type 'int (__thiscall analizator::* )(char)
term does not evaluate to a function taking 1 arguments
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.03.2011, 21:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель на функцию (C++):

Как сделать функцию, возвращающую указатель на функцию (которая в свою очередь возвращает указатель на массив) - C++
Изучаю c++ по одной книжке.Она говорить не умеет.. Так вот понадобилось написать функцию,которая как параметр получает указатель на...

В функцию-метод передать указатель на другую функцию-метод и вызвать через переданный указатель - C++
Друзья! Всем привет. Вот код: class otets { public: void f (void (otets::*p)()); private: void echo_f (){}; ...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

Передача умного указателя в функцию принимающую указатель на указатель - C++
Итак имеется функция со следующим параметром: HRESULT __stdcall Function(SomeClass **param); В случае, когда создаём обычный...

Передать в неуправляемую функцию указатель на указатель - C++
Неуправляемая функция типа FUNC(int ** r); Делаю так fixed (int* ptr = arr) { FUNC((int **)ptr); ...

Указатель на функцию возвращающую указатель - C++
Всем привет. Подскажите, пожалуйста, пример не очень сложной программы, в которой встречается указатель на функцию, принимающую параметр...

10
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
11.03.2011, 21:46 #2
У вас всё довольно запутанно, но напомню что указатель должен вызвать функцию через операцию стрелка (->).
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
11.03.2011, 21:50 #3
Flamе,
1. Для того чтобы вызвать метод объекта, нужен сам объект.
2. Для вызова метода через указатель используйте операторы .* и .->.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
class foo {
public:
  int bar() {
     return 100;
  }
};
 
int main() {
  int (foo::*pm)() = &foo::bar;
 
  foo foo;
  std::cout << (foo.*pm)() << std::endl;
}
0
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
11.03.2011, 21:52  [ТС] #4
CyBOSSeR, даже если эта функция вызывается в самом методе класса???
у меня дело обстоит вот так..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class analizator
{
private:
    char *buf;
    int (analizator::*q)(char);
public:
void func()
    {
        cin>>buf;
        q=&analizator::q0;
        for (int i=0; i<strlen(buf); i++)
        {
            (*q)(buf[i]);
        }
    }
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
11.03.2011, 21:55 #5
Свободная функция и функция-член - это разные вещи и работать надо с ними по разному.

Цитата Сообщение от Flamе Посмотреть сообщение
просто в инете сказано
То, что на заборе написано, тоже читаете?
Вместо интернета используйте классическую литературу по языку.
0
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
11.03.2011, 21:57 #6
Цитата Сообщение от Flamе Посмотреть сообщение
что вызов функции через указатель происходит так
разница между вызовом функции и функции-члена
0
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
11.03.2011, 21:59  [ТС] #7
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Свободная функция и функция-член - это разные вещи и работать надо с ними по разному.


То, что на заборе написано, тоже читаете?
Вместо интернета используйте классическую литературу по языку.
пыталась.... но почему то там нет такой темы...
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
11.03.2011, 22:09 #8
Цитата Сообщение от Flamе Посмотреть сообщение
пыталась.... но почему то там нет такой темы...
Книги как йогурты - не все одинаково полезны. Посмотрите в другой.
0
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
11.03.2011, 22:42  [ТС] #9
исправила таким образом:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class analizator
{
private:
        char *buf;
        int (analizator::*q)(char);
public:
void func()
        {
                cin>>buf;
                q=&analizator::q0;
                for (int i=0; i<strlen(buf); i++)
                {
                        (this->*q)(buf[i]);
                }
        }
ошибок нет, а будет ли работать посмотрим))
0
CyBOSSeR
Эксперт С++
2303 / 1673 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
11.03.2011, 22:53 #10
Flamе, даже стесняюсь спросить - я на кой гемморой с указателями? Что мешает так просто вызвать q0?
1
Flamе
9 / 9 / 0
Регистрация: 25.10.2009
Сообщений: 152
11.03.2011, 23:05  [ТС] #11
просто задание написать лексический анализатор с помощью конечного автомата через классы... вот, что-то типа этого)) и там в зависимости от каждого символа вызывается некоторая функция, поэтому нам советовали использовать указатели..
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.03.2011, 23:05
Привет! Вот еще темы с ответами:

Работа с файлом (передать указатель на файл в функцию, вернуть указатель на файл из функции) - C++
Подскажите как передать указатель на файл в функцию, как вернуть указатель на файл из функции. void Open() // из этой функции вернуть...

Как передать параметр типа "указатель на указатель" в функцию? - C++
#include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; #include &lt;iomanip&gt; using std::setiosflags; ...

Зачем передавать в функцию X указатель на callback функцию, если последняя ВНЕШНЯЯ и вызовется БЕЗО ВСЯКОГО УКАЗАТЕЛЯ? - C++
Собсно. То есть ребята, вот пример отсюда: http://www.cplusplus.com/reference/algorithm/count_if/ // count_if example #include...

Шаблоны функции и указатель на функцию передаваемый в функцию - C++
Привет! Вопрос такой: Если я пишу сортировку, например, bubbleSort и хочу помимо массива и его размера передать ещё и указатель на функцию,...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
11.03.2011, 23:05
Ответ Создать тему
Опции темы

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