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

Вызов через указатель на функцию-член - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как в wxDev Cpp выводить данные в окно? http://www.cyberforum.ru/cpp/thread873504.html
Такой вопрос: я хочу из посторонней функции выдавать результат в memo, всегда раньше в консоль выводил. Подскажите пожалуйста я просто добавил в конец файла $(Projectname)Frm.cpp функцию void...
C++ Запись картинки в файл Здравствуйте. Возник вопрос, есть такая лаба: Для каждого целого числа N из диапазона от 1 до 50 найти подходящим методом с точностью 1/N2 наибольший корень уравнения X3/N2 – 3X2 + 1=0. Получить... http://www.cyberforum.ru/cpp/thread872257.html
C++ import dll
Добрый день. Есть такой импорт: int __stdcall connect(SOCKET s, const struct sockaddr *name, int namelen) extrn connect:dword Идёт из WS2_32.dll. Не подскажете что оно делает?( ...
C++ Геймдев
Всем привет. Учусь в 9 классе. В последнее время нравится программирование и физика. Хочется заняться геймдевом, но т.к с 6-8 класс на уроках математики и геометрии я спал (и на физике тоже,...
C++ Где можно найти книги по С++ http://www.cyberforum.ru/cpp/thread869363.html
Хотел попробовать на етом язике поучится
C++ Нужен совет. Написание АРМ Здравствуйте. Есть задание, нужно написать программу на C++ АРМ врача-стационара. Подскажите, какой фреймворк лучше использовать для таких целей? допустим для C# есть entity framework. Есть ли... подробнее

Показать сообщение отдельно
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045

Вызов через указатель на функцию-член - C++

22.05.2013, 19:24. Просмотров 7255. Ответов 4
Метки (Все метки)

Всем экспертам привет Разбавим раздел, так сказать.

Задался тут таким вопросом:
Есть класс, в котором объявлено поле типа "указатель на функцию-член" :
C++
1
2
3
4
5
struct C
{
   void (C::*m)();
   ...
};
И если я захочу например в какой-нибудь функции-члене вызвать функцию через этот указатель, мне придется писать так:
C++
1
(this->*m)();
Вопрос: зачем нужен этот явный this? Пункт 5.5 стандарта читал, но так и не понял, почему нельзя вызвать просто:
C++
1
m();
находясь при этом "внутри" класса.

Немного кода для примера:
Кликните здесь для просмотра всего текста
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
#include <iostream>
 
struct C
{
    void (C::*m)();
    void f() { std::cout << "member f()\n"; }
    C() 
    {
        m = &C::f;
        (this->*m)(); // Вызываем так.
        // m(); // Почему нельзя так?
    }
};
 
void (*m)();
void f() { std::cout << "global f()\n"; }
 
 
int main() {
 
    C c;
    m = f;
    f();
    
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru