Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Нейронная сеть на c++ Уважаемые форумчане нужна ваша помощь с нейронной сетью на c++! На днях захотел написать прогу - многослойный перцептрон на c++, вроде информации много и пытался менять код, но всё одинаково, прога... https://www.cyberforum.ru/ cpp-beginners/ thread2492504.html Написать функцию, которая возвращает сумму элементов массива с номерами от left до right C++
Написать функцию, которая принимает массив размера N и целые числа left и right и возвращает сумму элементов массива с номерами от left до right включительно. Задать размерность массива как...
C++ бинарный файл содержащий определенную последовательность нулей и единиц https://www.cyberforum.ru/ cpp-beginners/ thread2492383.html
как мне создать бинраник длиной скажем 6 бит, содержащий соответственно шесть рандомных бит? например 011001. Везде где что находил, там запись побайтово. Записываются определенные типы данных. А...
C++ Отсортировать 3 числа в порядке неубывания ( #define swap ) https://www.cyberforum.ru/ cpp-beginners/ thread2492375.html
Всем привет, возможно ли через #define сделать что-то подобное? #define SWAP(x,y,z) ( if ( y > z ) swap(y,z); if ( x > y ) swap(x,y); if (y > z) swap(y,z)) Чтобы не писать постоянно в main...
Класс, как сделать публичную функцию которая содержала бы приватные? C++
Как сделать в классе публичную функцию, которая бы содержала приватные функции? Давайте посмотрим на публичную функцию enter() (строка 4 и 23). Она выполняет строку 27 и на этом заканчивается. Что...
C++ Хочу научиться делать читы и совершенствоваться! https://www.cyberforum.ru/ cpp-beginners/ thread2492187.html
знаю основы с++, но есть немного того, чего не понял. хочу научиться использовать хуки, работать с памятью процессора... Кто может стать моим наставником?
C++ Выделение блока памяти нулевого размера Каков результат оператора type* ptr = new type;? https://www.cyberforum.ru/ cpp-beginners/ thread2492186.html Реализация функции swap_min C++
Здравствуйте, пытаюсь решить на степике следующую задачу: Реализуйте функцию swap_min, которая принимает на вход двумерный массив целых чисел, ищет в этом массиве строку, содержащую наименьшее среди...
C++ Проблема с умным указателем std::unique_ptr https://www.cyberforum.ru/ cpp-beginners/ thread2492115.html
здравствуйте. есть задание - написать небольшую простенькую игру, где есть базовый класс Unit, кроме него есть ещё три класса - Swordsman(мечник), Archer(лучник), Mage(маг), которые наследуются от...
C++ Сильно туплю с IF https://www.cyberforum.ru/ cpp-beginners/ thread2492109.html
#include "pch.h" #include <iostream> #include <random> #include <time.h> #include <windows.h> #include "Children.h" using namespace std;
Класс аллокатор C++
Какие требования к написанию класса Аллокатора?
C++ Мой стринг, виртуальные функции https://www.cyberforum.ru/ cpp-beginners/ thread2492057.html
Пример из книги - жалуется на 83 строку - не существует подходящего конструктора для преобразования const char в String Нужно сделать константной строку? Тогда ошибка в функции strcpy жалуется на...
118 / 5 / 4
Регистрация: 05.05.2013
Сообщений: 334
0

Перевод указателя на член класса в обычный указатель - C++ - Ответ 13779810

19.08.2019, 21:45. Показов 1686. Ответов 4
Метки (Все метки)

Добрый день.

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

Например: у нас есть класс

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
#ifndef LIGHT_SOURCE_CORE_SYSTEM_CALLBACK_H
#define LIGHT_SOURCE_CORE_SYSTEM_CALLBACK_H
 
#include "thread.h"
 
namespace LightSource
{
    namespace Core
    {
        namespace System
        {
            class Callback
            {
            private:
                Thread* m_thread;
 
                int CallbackThread(unsigned int args, void *argp)
                {
                         /* выполнение кода в отдельно выделенном потоке будет тута */
                }
            public:
                Callback()
                {
                        m_thread = LightSource::Core::System::Thread::Create("update_thread", this->CallbackThread, 0x11, 0xFA0, 0, 0);
    
                        if (m_thread->IsValid())
                        {
                                m_thread->Start(0, 0);
                        }
                }
                
                virtual ~Callback();
            };
        }
    }
}
 
#endif
Проблема в том, что статичная функция Thead::Create вторым параметром принимает обычный указатель след. типа:

C++
1
typedef int (*SceKernelThreadEntry)(unsigned int args, void *argp);
Т.е. происходит ошибка, т.к. на вход я посылаю:
C++
1
int (LightSource::Core::System::Callback::*)(unsigned int, void*) // member pointer
В место:
C++
1
int (*)(unsigned int, void*) // ordinary pointer
Вопрос: можно перевести из указателя на член класса (pointer-to-member-function) в обычный указатель (pointer-to-function)?

Вернуться к обсуждению:
Перевод указателя на член класса в обычный указатель C++
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.08.2019, 21:45
Готовые ответы и решения:

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

Указатель на объект из указателя на член класса
Что как-то сей вопрос ставит меня в тупик. class A { int i; } obj; int main()

Не могу разобраться с синтаксисом указателя на указатель-член структуры
#include &lt;iostream&gt; int i = 100; struct str { int x; int *pi; } index, *p;

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

4
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.08.2019, 21:45

Передача указателя на функцию-член класса
Необходимо передать фунцию-член класса как аргумент в функцию другого класса. Код: Файл...

Хранение в map указателя на функцию-член шаблонного класса
Здравствуйте! Сделал я себе вызов написать джунгли из ООП деревьев, типо, объекты обмениваются...

Указатель на функцию-член класса
Нужно передать указатель на функцию класса A изнутри самого класса А в функцию, в качестве...

Указатель на функцию - член класса.
делаю так: class c1 { void foo(); } class c2 { void (*fp)();

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