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

Указатель на метод класса (ошибка) - C++

Восстановить пароль Регистрация
 
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
11.07.2013, 23:24     Указатель на метод класса (ошибка) #1
помогите исправить код что бы разобраться в нем)
взято с книги и не компилиться. выкидывает ошибку (code::blocks) :
"ошибка: некорректный вызов элемента-функции «void A::Func()» без объекта "

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
35
36
37
38
39
40
41
#include <iostream>
#include <windows.h>
using namespace std;
//////////////////////////// CLASS A ///////////////////////////////////
class A
{
    int i;
public:
    A (int ii) : i(ii) { ; }
    void Func ()
    {
        std::cout << " Hello! My datum is : " << i << "\n" << std::endl;
    }
    void callMemberPtr(void (A:: *funcPtr)( ))   // метод класса, вызывающий другой метод этого же класса,
                                                // адрес которого передается как аргумент
    {
        (*this.*funcPtr) ( );
        /// (this -> *funcPtr) ();
    }
};
/////////////////////////// END CLASS //////////////////////////////////
 
 
void UseMemFuncPtr (A *ObjPtr, void (A:: *funcPtr) ( ))
{
    (ObjPtr->*funcPtr) ();
}
 
int main()
{
  /*/ error -> /*/  void (A:: *funcPtr)( ) = &A::Func();       // Указатель на метод класса должен получить адрес какого-нибудь метода
                                                // совпадающего с ним по типам возвращаемого значения
    A a1 (1965);    /// создание обькта класса А с наальным значением элемента i
    UseMemFuncPtr(&a1, funcPtr);
    A a2 (3435);    // создание обьекта а2 класса А с начальным значением элемента i
    a2.callMemberPtr(funcPtr);
 
 
    system ("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2013, 23:24     Указатель на метод класса (ошибка)
Посмотрите здесь:

C++ Указатель на метод и на поле класса
Указатель на метод класса! C++
C++ Аргумент функции - указатель на метод класса
C++ Указатель на метод класса
C++ Как получить значение из метода класса, если метод возвращает указатель?
Указатель на метод класса C++
Шаблон класса двусвязного списка, метод, возвращающий указатель C++
Как сделать указатель/ссылку на метод конкретного экземпляра класса C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.07.2013, 23:55     Указатель на метод класса (ошибка) #2
C++
1
void (A:: *funcPtr)( ) = &A::Func;
zybrzybr
 Аватар для zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
12.07.2013, 00:18  [ТС]     Указатель на метод класса (ошибка) #3
получается что метод не клонируется для каждого обьекта ?
т.е. один раз выделяется память под него(метод) и далее просто загружаються в него параметры от разных обьектов?
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
12.07.2013, 00:24     Указатель на метод класса (ошибка) #4
методы не клонируются.
для указателей на методы другой синтаксис, т.к. вызов метода через указатель на метод отличается от вызова функции через указатель, ведь вызов метода отличается от вызова функции.
Yandex
Объявления
12.07.2013, 00:24     Указатель на метод класса (ошибка)
Ответ Создать тему
Опции темы

Текущее время: 06:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru