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

Указатель на функцыю внутри класса - C++

Восстановить пароль Регистрация
 
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
12.08.2013, 18:46     Указатель на функцыю внутри класса #1
Доброго времени суток! Помогите пожалуйста понять как можно вызвать функцию член класса через указатель. Интересны варианты для статической так и не статической функции
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
#include <fstream> // для потоковых файловых функций
#include <typeinfo> // для typeid()
using namespace std;
#include <process.h> // для exit()
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
 
class person
{
private:
    static int num;
public:
    person(){}
    static void shownumAnd(char * name)
    {
        cout<<endl<<num<<' '<<name;
    }
 
};
int person::num=6;
 
 
void sortV(float*, float*)
{
}
void main()
{
   setlocale( LC_ALL,"Russian" );
   person sad;
   void (* ptr)(char *) = &person::shownumAnd;
 
   person::ptr("Дмитрий");
 
 
 
   cout<<endl;
   system("pause");
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.08.2013, 18:46     Указатель на функцыю внутри класса
Посмотрите здесь:

Инициализация класса A внутри класса B C++
Есть метод класса внутри , есть проверка. Если условие сходится то метод должен выдать указатель, иначе булевую переменную C++
C++ delete внутри класса для самого класса
Функция указатель на класс, определенный внутри шаблонного класса C++
Обращение к методам класса через указатель на экземпляр класса C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
12.08.2013, 18:58     Указатель на функцыю внутри класса #2
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
#include <iostream>
 
class Foo
{
public:
    void bar() const
    {
        std::cout << "bar" << std::endl;
    }
 
    static void spam()
    {
        std::cout << "spam" << std::endl;
    }
};
 
int main()
{
    void (*spam_ptr)() = Foo::spam;
    spam_ptr();
 
    void (Foo::*bar_ptr) () const = &Foo::bar;
    Foo f;
    (f.*bar_ptr)();
}
no_wearines
 Аватар для no_wearines
52 / 48 / 2
Регистрация: 01.01.2012
Сообщений: 322
12.08.2013, 18:59     Указатель на функцыю внутри класса #3
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
class person
{
private:
    static int num;
public:
    person(){}
     void f1(char * name)
    {
        cout<<endl<<num<<' '<<name;
    }
    static  void f2(char * name)
    {
        cout<<endl<<num<<' '<<name;
    }
 
};
int person::num=6;
 
 
void sortV(float*, float*)
{
}
void main()
{
   setlocale( LC_ALL,"Russian" );
   person sad;
//Для не статической
void (person::*ptr)(char *) = person::f1;
(sad.*ptr)("hello");
 
//Для статической
void (*ptr1)(char *) = person::f2;
ptr1("sd");
 
   cout<<endl;
   system("pause");
}
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
26.08.2013, 19:08  [ТС]     Указатель на функцыю внутри класса #4
Jupiter, А почему для инициализации статического указателя void (*spam_ptr)() = Foo::spam; можно не делать операцию взятия адреса &Foo::spam; ?
Yandex
Объявления
26.08.2013, 19:08     Указатель на функцыю внутри класса
Ответ Создать тему
Опции темы

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