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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
#1

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

11.07.2013, 23:24. Просмотров 498. Ответов 3
Метки нет (Все метки)

помогите исправить код что бы разобраться в нем)
взято с книги и не компилиться. выкидывает ошибку (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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2013, 23:24
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Указатель на метод класса (ошибка) (C++):

Как передать в метод класса Menu указатель на метод дочернего класса? - C++
Как передать в метод базового класса указатель на метод дочернего: class Menu() { protected: setCallback(*********); //...

Функция, получающая указатель на обычную функцию, получает указатель на метод класса - C++
Здравтсвуйте. Имеется вопрос по указателям на методы класса. Допустим, есть функция( f ), которая принимает указатель на функцию и...

Указатель на метод класса - C++
Как сделать указатель на метод класса А, который наследует класс В в классе В. class A : B { public: double...

Указатель на метод класса - C++
Есть для этого какой-нибудь инструмент? Интересует именно не ссылка, а указатель. Хочется примерно следующего: typedef...

Указатель на метод класса - C++
Собственно, проблема вот в чем. Есть класс и для него определен метод class ABC ....... public: void paint(.....); ...

Указатель на метод класса! - C++
Ответьте пожалуйста на такой вопрос:Возможна ли такая ситуация и как ее реализовать правильно? Мне надо использовать функцию(void...

3
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
11.07.2013, 23:55 #2
C++
1
void (A:: *funcPtr)( ) = &A::Func;
1
zybrzybr
17 / 16 / 0
Регистрация: 29.09.2010
Сообщений: 156
12.07.2013, 00:18  [ТС] #3
получается что метод не клонируется для каждого обьекта ?
т.е. один раз выделяется память под него(метод) и далее просто загружаються в него параметры от разных обьектов?
0
DU
1484 / 1130 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
12.07.2013, 00:24 #4
методы не клонируются.
для указателей на методы другой синтаксис, т.к. вызов метода через указатель на метод отличается от вызова функции через указатель, ведь вызов метода отличается от вызова функции.
1
12.07.2013, 00:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.07.2013, 00:24
Привет! Вот еще темы с ответами:

Указатель на метод класса - C++
Доброго времени суток, форумчане. Необходимо получить указатель на размер вектора. Делаю из соображений быстродействия, т.к. каждый раз...

Указатель на метод класса - C++
Приветствую. Нужна помощь. Не работает указатель в данной программе: #include &lt;iostream&gt; #include &lt;string.h&gt; using namespace std; ...

Указатель на метод и на поле класса - C++
Суть такова, нужно создать класс студент, определить метод доступа к скрытым полям уровень знаний и курс. Создать открытое поле стипедия....

Аргумент функции - указатель на метод класса - C++
Здравствуйте. Содержание задания - написать программу, создающую копию выбранного пользователем файла при помощи n-го кол-ва потоков...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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