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

Передать метод класса как параметр - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Оператор ИЛИ http://www.cyberforum.ru/cpp-beginners/thread1066780.html
Программа должна проверять строку на правильность ввода(строка состоит из последовательностей нолей и единиц разделённых пробелами) #include <iostream> #include <iomanip> #include <string.h> using namespace std; int main() { int cancel_program; do {
C++ Найти количество локальных минимумов в одномерном массиве Составьте функцию, определяющую количество локальных минимумов для массива целых чисел. Элемент является локальным минимумом, если он строго меньше своих соседей. http://www.cyberforum.ru/cpp-beginners/thread1066776.html
C++ Разработать функцию, позволяющую поменять местами две произвольные строки двухмерного массива
Разработать функцию, позволяющую поменять местами две произвольные строки двухмерного массива. Ввести массив. Поменять два раза по две строки. #include <iostream> #include <stdio.h> using namespace std; char **s = new char* , *t; int i, j, n; int main() {
Что сложнее C++ или delphi? C++
Подскажите мне пожалуйста. Что сложнее C++ или delphi?
C++ Описать абстрактный класс породить от него еще два,один должен остаться абстрактным,другой должен быть способен пораждать объекты http://www.cyberforum.ru/cpp-beginners/thread1066765.html
Знает кто как сделать?
C++ Заполнение массива спиралькой Сделать функцию, которая заполняет массив спиралькой. подробнее

Показать сообщение отдельно
FraidZZ
Модератор
 Аватар для FraidZZ
3878 / 1504 / 227
Регистрация: 06.01.2013
Сообщений: 4,029
Завершенные тесты: 1
09.01.2014, 19:34     Передать метод класса как параметр
C++
1
2
3
4
5
6
7
class A {
  void B{ ... }
};
 
void (A::*P)() = (A::&B);
A obj = new A();
new std::thread(obj->*P);
Какое объявление у конструктора класса std::thread ?

Добавлено через 4 минуты
Так, у вас код был с ошибками, а я скопипастил

C++
1
2
3
4
5
6
7
8
9
10
11
12
class A {
  public:
  void B(){}
  A(){}
};
 
int main() {
    void (A::*P)() = &A::B; //Создаем указатель на поле класса.
    //Такой указатель содержит не конкретный адрес в памяти, а только смещение относительно начала класса
    A *obj = new A();
    new std::thread(obj->*P); //Для раскрытия указателя на поле класса используем оператор ->*
}
 
Текущее время: 09:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru