Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Раздельная компиляция (нюансы использования заголовочных файлов и файлов реализации) https://www.cyberforum.ru/ cpp-beginners/ thread1633408.html
Почему во многих учебниках функции-члены класса внутри класса только объявляют, но определяют вне самого класса (не, ну как бы в классе, но вне) пример ниже class C { int func(int n);//...
Сортировка по алфавиту C++
#include <iostream> #include<cstring> using namespace std; int main() { int i,j,s=1,k=0,space=0,n; char str,str1; cout<<"Введите слова: "; gets(str1);
C++ Вычислить сумму чисел в текстовой строке
Ввести символьную строку, содержимое которой – несколько целых чисел. Вычислить сумму этих чисел. Строку и полученную сумму вывести на экран.
C++ Обменять элементы главной диагонали заданной квадратной матрицы, с элементами её первого столбца Составить программу обмена в матрице A элементов, находящихся на главной диагонали, с соответствующими элементами первого столбца. https://www.cyberforum.ru/ cpp-beginners/ thread1633389.html
C++ Компиляция в g++ из MinGW https://www.cyberforum.ru/ cpp-beginners/ thread1633359.html
Добрый день! После скачивания и установки MinGW пытаюсь скомпилировать простую программу из разряда Hello, World! Набирая в командной строке g++ hello.cpp -o hello.exe получаю сообщение об...
STL, что такое iterator? C++
Взываю о помощи ко всему прогрессивному человечеству, Что это: vector<float>::iterator iter;
Правильное удаление массива по указателю из списка C++
Не удаляется массив символов в структуре. Комментарий в коде удаления. Структура: struct pointDir { char *data; pointDir *next;
C++ Создать пользовательский класс "Student" (файловый ввод/вывод) Написать программу обработки файла типа запись, содержащую следующие пункты меню: «Создание», «Просмотр», «Коррекция» (добавление новых данных или редактирование старых), «Решение индивидуального... https://www.cyberforum.ru/ cpp-beginners/ thread1633314.html
C++ Найти указанное значение в целочисленной матрице https://www.cyberforum.ru/ cpp-beginners/ thread1633313.html
В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) найти указанное значение. Массив в памяти разместить динамически (с использованием операций...
C++ Вычислить сумму модулей элементов массива, расположенных после минимального по модулю элемента В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить: Сумму модулей элементов массива, расположенных после минимального по... https://www.cyberforum.ru/ cpp-beginners/ thread1633304.html
57 / 9 / 4
Регистрация: 14.06.2013
Сообщений: 129
0

Как сделать функцию от указателя на класс и указателя на метод?

07.01.2016, 15:18. Просмотров 1095. Ответов 4
Метки (Все метки)

Не получается сделать функцию, параметрами которой являются указатель на класс и на метод. Обращаться к классу нужно именно по указателю, дабы модифицировать эту функцию для возможности работы с массивами экземпляров класса, а не просто с одним экземпляром класса.

В 27-ой строке обычное обращение (ptTest->*ptMethod)(); работает, а вот внутри функции TestFunc (14-я строка) почему-то то же самое не работает!
Кто-нибудь знает почему и как это исправить?...

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
31
32
33
34
#include <iostream>
using namespace std;
 
class Test
{public:
     void foo()
     {cout << "Test::foo called" << endl;}
};
 
//объявляем тип указателя:
typedef void (Test::* pToFunc)();
 
//определим функцию от указателя на класс и от указателя на метод класса:
void TestFunc(Test* clink, pToFunc TFunc)
{
    (clink -> *TFunc)();
};
 
int main()
{
    //создаём объект этого типа и инициализируем его:
    pToFunc ptMethod = &Test::foo;
 
    Test  test;
    Test *ptTest = &test;
    //обратимся к методу напрямую:
    (ptTest->*ptMethod)();
 
    //обратимся с помощью функции
    TestFunc(ptTest,ptMethod);
 
    cin.get();
    return 0;
}
Пишет ошибку "error: expected unqualified-id before '*' token"....

Вернуться к обсуждению:
Как сделать функцию от указателя на класс и указателя на метод?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2016, 15:18
Готовые ответы и решения:

Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на абстрактный класс А ...
Написать обработчик исключений ситуации при преобразовании указателя на класс B до указателя на...

Передача в метод указателя на класс
Здравствуйте. Столкнулся со следующей проблемой: при передачи в метод пустого указателя на класс,...

Передача указателя на метод в функцию
Подскажите плиз. Есть некий класс и в нём метод: ... DWORD WINAPI func(LPVOID lParam) {...

Сделать уравнение методом Ньютона. Функцию передать как параметр с поддержкой указателя
Уравнение - 0,1(x)^2-xlnx=0 Отрезок содержащий корень - Метод - Ньютона Значения корня с...

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