Войти
ПрограммированиеФорумОбщее

Как узнать адрес функции в классе?

Страницы: 1 2 Следующая »
#0
14:00, 24 июля 2009

Мне надо просто узнать адрес функции, но компилятор выкидывает ошибку.
error C2440: 'initializing' : cannot convert from 'void (__thiscall A::* )(void)' to 'void *'

class A
{
public:
  void my()
  {
    cout << "gg";
  }
};

int main()
{
  void* ptr = &A::my; // как правильно сделать????

  return 0;
}

#1
14:09, 24 июля 2009

Duplex
> void* ptr = &A::my;

Изображение
#2
14:18, 24 июля 2009
void (A::*ptr)() = &A::my;

или так

typedef void (A::*afunc)();
afunc ptr = &A::my;

#3
14:19, 24 июля 2009

Ну. щас посмотрим. спс.

#4
14:24, 24 июля 2009

Duplex
> надо просто узнать адрес функции
Это бессмысленно.

Посмотри на sizeof(&A::my)
и удивись.

#5
14:27, 24 июля 2009

вот много чего расписано на тему "взятие адреса функции-члена класса", с рабочими примерами кода:
http://www.codeproject.com/KB/cpp/FastDelegate.aspx

правда на английском.

#6
15:04, 24 июля 2009

Опять эти ужасные костыли!

#7
15:09, 24 июля 2009

на рсдн есть статья, называется быстрые делегаты, там много инфы об устройстве указателя на метод класса, и варианты реализации в разных компиляторах, тоже примеры с кодом
http://www.rsdn.ru/article/cpp/fastdelegate.xml

#8
15:22, 24 июля 2009
#include <iostream>
using namespace std;

class A
{
public:
  void my()
  {
  cout << "gg";
  }
};

typedef void (A::* FUNCPTR)();

int main()
{
  A a;
  FUNCPTR ptr1=&A::my;
  (a.* ptr1)();
  return 0;
}
#9
15:23, 24 июля 2009

Nikopol

*ROFL*

#10
16:36, 24 июля 2009

Duplex
посмотри MSDN описание функции mem_fun.

#11
16:54, 24 июля 2009

Nikopol
Ну картинка ЖЖОШЬ опять!!!!

#12
23:31, 24 июля 2009

Мух
Nikopol еще и не такое может! гг

#13
22:53, 26 июля 2009

А мне нравится

typedef int (__cdecl *FUCK)(void);
FUCK f = (FUCK)0x10011172;//адрес функции в классе  xD
//p - указатель на объект
__asm
{
  mov ecx, p
}
f(); //вызов функции хD, какие ошипки могут быть???

P.S. Наверно ультра неправильный и убогий код хД))

#14
0:02, 27 июля 2009

Ну например ошибки в стиле что ничего не работает.

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.