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

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

Войти
Регистрация
Восстановить пароль
 
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
#1

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

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

Не создается указатель на класс внутри класса - C++
Всем привет! У меня возникла очень интересная ситуация... У меня есть набор классов. Часть классов являются членами других классов. ...

Функция указатель на класс, определенный внутри шаблонного класса - C++
Доброго времени суток! Помогите пожалуйста разобрать со следующим кодом: template &lt;class T&gt; class List{ class Node{ public: ...

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

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

Указатель на указатель внутри структуры - C++
Приветствую. Есть 2 структуры: enum category { Technical, History, Fiction }; struct BOOK { char author; char name; int...

Указатель на объект базового класса и адрес объекта производного класса - C++
Пример кода: class Class1 { public: Class1(int x) { j = new int; *j = x; } ~Class1() {delete j;}

3
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 227
Регистрация: 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)();
}
1
no_wearines
53 / 49 / 2
Регистрация: 01.01.2012
Сообщений: 343
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");
}
1
ArkTaS
1 / 1 / 0
Регистрация: 01.07.2013
Сообщений: 127
26.08.2013, 19:08  [ТС] #4
Jupiter, А почему для инициализации статического указателя void (*spam_ptr)() = Foo::spam; можно не делать операцию взятия адреса &Foo::spam; ?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.08.2013, 19:08
Привет! Вот еще темы с ответами:

Использование в качестве поля класса указатель на объект другого класса - C++
Ошибка в названии - &quot;указателЯ&quot; Вот, пытаюсь освоить ООП (пока только учусь): создаю класс person (человек) и car (модель машины). ...

Правда, что указатель класса-наследника не может указывать на объект класса-родителя? - C++
Доброго времени суток! Пример кода ниже. Правда ли , что указатель класса-наследника не может указывать на объект класса-родителя? ...

Определить обработчик исключений на преобразование указателя базового класса на указатель производного класса - C++
Класс В является производным от класса А. Определить обработчик исключительной ситуации на преобразование указателя базового класса А на...

Указатель на метод класса в качестве аргумента метода класса - C++
Функция _createFun вызывается для создания ХХХ в основном классе. Но вот потребовалось создать ХХХ в дополнительном классе. Вопрос: как...


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

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

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