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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ std::filesystem && std::asio и пр http://www.cyberforum.ru/cpp/thread607412.html
Пытался найти хоть какие-то сроки включения всего этого в стандарт (так же ожидается lexical_cast, any, string_algo и т.д.) и вообщем везде написано разное, проскакивает инфа о 2017 годе... Как-то не слишком оптимистично, кто-то может подсказать какие-либо сведения по этому поводу (желательно с пруф линками)?
C++ Многомерный вектор Необходимо разработать шаблон, который будет реализовывать функционал n-мерного массива, то есть, во время выполнения нужно изменять колличество измерений и размерность каждого. Словом, то же самое, что vector, только n-мерный. Подскажите, есть что-то такое готовое? Если нет, как такое можно написать? Писать на статике, естественно, не подходит, и выделять всю память при изменении размера тоже... http://www.cyberforum.ru/cpp/thread603441.html
Как реализован unordered_map? C++
Собственно, интересна именно практическая сторона вопроса, как реализуется идеальное хеширование за O(1) в среднем ясно, об этом можно почитать в том же Кормене. Понятно, что реализации в каждом компиляторе могут быть разными. Мне интересно, как это вообще можно написать. Если кто знает - расскажите, пожалуйста.
Поделитесь результатами компилирования следующего кода C++
всем привет! нужно определить, какими компиляторами поддерживаются встроенные функции __is_pod() и __is_enum(). согласно нагугленому мною, они должны поддерживаться GCC начиная с 4.4.3. (это я уже проверил), CLang начиная с 2.8, касательно Intel и MSVC я так и не понял начиная с каких версий... интересуют: 1. CLang 2. MSVC 3. Intel
C++ Что такое compile-time алгоритмы и для чего они нужны? http://www.cyberforum.ru/cpp/thread419864.html
compile-time алгоритмы А есть от них хоть какая-то практическая польза? По-моему нет
C++ Непонятная разница в производительности Уважаемые эксперты! Есть у меня программа на С++, код которой я транслировал в двух системах: • Microsoft Visual Studio 2010 со штатным компилятором среды; • Code::Blocks версии 10.05 с пакетом MinGW и компилятором g++ версии 4.6.1. Проверка проводилась на следующей платформе: • Процессор Intel® Core™ i3 CPU 530 @2.93, индекс производительности 6.9; • Оперативная память 4 Гб, индекс... подробнее

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

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

22.05.2013, 19:24. Просмотров 7191. Ответов 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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 18:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru