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

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

Войти
Регистрация
Восстановить пароль
 
Apparat_UA
5 / 5 / 2
Регистрация: 06.01.2015
Сообщений: 135
#1

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

09.12.2015, 13:38. Просмотров 137. Ответов 3
Метки нет (Все метки)

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
class Letter
{
public:
    void(Letter::*side[6])();
 
    Letter() 
    { 
        side[0] = front;
        side[1] = right_flang;
        side[2] = top;
        side[3] = bottom;
        side[4] = left_flang;
        side[5] = back;
    }
        void front();
        void right_flang();
        void top();
        void bottom();
        void left_flang();
        void back();
};
 
int main()
{
   Letter M;
   for(int i = 0; i < 6; i++)
       M.side[i]();
}
M.side[i](); Подчеркивает как ошибку. В чем проблема ?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2015, 13:38     Указатель на фунцкию-член
Посмотрите здесь:

Указатель на функцию член - C++
Вот урезаный донельзя код: class Window { public: ... bool registerClassEx()

указатель на член в массиве - C++
Добрый день! Возникла проблемка... грубо говоря есть два массива x и y, как к примеру указателю x присвоить указатель y? через &amp;x не дается...

указатель на функцию-член! - C++
Как в аргумент функции передать указатель на метод класса? Метод в классе у меня статический,все равно не получается(невозможно...

Указатель на функцию-член - C++
Имеем следующий код: #include &lt;iostream&gt; using namespace std; class Windows { public: void OpenWindows() { cout &lt;&lt; &quot;Open...

Указатель на функцию-член - C++
Доброго времени суток, возникла следующая ситуация: Приведу пример: class A { public: void a() { cout &lt;&lt; &quot;hello!&quot;; }; }; ...

Указатель на функцию-член - C++
// howmany.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt;...

Указатель на функцию - член класса. - C++
делаю так: class c1 { void foo(); } class c2 { void (*fp)();

Указатель на ф-цию член класса - C++
Чёрная магия или я бот? g++ sub.cpp:21: error: expected unqualified-id before ‘*’ token sub.cpp:21: error: must use ‘.*’ or...

Указатель на член структуры/класса - C++
Всем привет! Помогите разобраться. Пусть есть такой код: template &lt;typename Type&gt; class DynamicQueue { private: class Node { ...

Указатель на функцию-член класса - C++
Нужно передать указатель на функцию класса A изнутри самого класса А в функцию, в качестве аргумента классу B. #include &lt;Windows.h&gt;...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.12.2015, 13:53     Указатель на фунцкию-член #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Apparat_UA Посмотреть сообщение
В чем проблема ?
В том, что указатель на функцию-член должен быть вызван для объекта, а в твоем случае ты просто получаешь доступ к нестатическом члену данных side, и пытаешься вызвать без объекта.

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
#include <iostream>
 
class Letter
{
public:
    void(Letter::*side[6])();
 
    Letter() 
    { 
        side[0] = &Letter::front;
        side[1] = &Letter::right_flang;
        side[2] = &Letter::top;
        side[3] = &Letter::bottom;
        side[4] = &Letter::left_flang;
        side[5] = &Letter::back;
    }
        void front() { std::cout << "front\n"; }
        void right_flang() { std::cout << "right_flang\n"; }
        void top() { std::cout << "top\n"; }
        void bottom() { std::cout << "bottom\n"; }
        void left_flang() { std::cout << "left_flang\n"; }
        void back() { std::cout << "back\n"; }
};
 
int main()
{
   Letter M;
   for(int i = 0; i < 6; i++)
       (M.*(M.side[i]))();
}
Apparat_UA
5 / 5 / 2
Регистрация: 06.01.2015
Сообщений: 135
09.12.2015, 14:20  [ТС]     Указатель на фунцкию-член #3
А если а хочу этот цикл засунуть в метод этого класса, как тогда вызывать методы из массива ?
Tulosba
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
09.12.2015, 14:28     Указатель на фунцкию-член #4
Цитата Сообщение от Apparat_UA Посмотреть сообщение
как тогда вызывать методы из массива ?
Внутри нестатической функции-члена доступ к членам можно обеспечить уже без явного указания экземпляра.
Поэтому, самую внутреннюю M можно убрать, или заменить на this->. Однако экземпляр, на котором будет вызываться функция, всё равно нужен. Т.о.:
C++
1
(someInstance.*(this->side[i]))();
Пример функции-члена:
C++
1
2
3
4
void f() {
   for(int i = 0; i < 6; i++)
      (this->*side[i])();
}
Yandex
Объявления
09.12.2015, 14:28     Указатель на фунцкию-член
Ответ Создать тему
Опции темы

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