Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2011, 22:12   #1
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию Получить адрес функции в классе

Доброго времени суток уважаемые специалисты!
Вообщем возник следующий вопрос, необходимо передать аргументом адрес функции что находится в классе но у меня никак не получается правильно это сделать.

#Вообщем вот глазейте
Прототип функции которой я передаю аргументом адрес функции класса: void MyFunc(DWORD dwMyFuncOffset, DWORD dwJmpOffset);

Пример вызова:
Utils.MyFunc((DWORD)Protocol.Protoc olSend...
Компилятор льет меня следующей нецензурной фразой, "a pointer to a bound function may online be used to call the function"
Если к примеру ProtocolSend вынести вне класса, все нормально, то есть эт выглядит так:
Utils.MyFunc((DWORD)&ProtocolSend, ...);

Вообщем я как не пытался но подставить адрес неможу... Помогите решить проблему, за ранее благодарен за помощь.
coNsept вне форума Ответить с цитированием
Старый 01.03.2011, 23:42   #2
ISergeyN
Maniac
Форумчанин
 
Аватар для ISergeyN
 
Регистрация: 03.01.2009
Сообщений: 450
По умолчанию

Код:
Вообщем возник следующий вопрос, необходимо передать аргументом адрес функции что находится в классе но у меня никак не получается правильно это сделать.
Это очень не удобно... можно так

Код:
class Foo{
public:
	void func(int x){ std::cout << "x = " << x << std::endl; }
};


//typedef void (Foo::*pToFunc)(int);


template<typename T, typename FUNC>
void TestFunc(T &obj, FUNC f, int x)
{
	(obj.*f)(x);
}


int main()
{
	Foo f;
	TestFunc(f, &Foo::func, 10);
}
Но кажись можно как то обойтись без этого..
Посмотри еще boost::function http://live.boost.org/doc/libs/1_46_.../tutorial.html
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....

Последний раз редактировалось ISergeyN; 01.03.2011 в 23:46.
ISergeyN вне форума Ответить с цитированием
Старый 02.03.2011, 00:29   #3
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

Спасибо за вариант, у кого есть еще какие-то идеи?
coNsept вне форума Ответить с цитированием
Старый 02.03.2011, 02:43   #4
alex_x_x
Форумчанин
 
Регистрация: 31.01.2011
Сообщений: 160
По умолчанию

то что вы пытаетесь сделать будет работать от силы только для статических функций
все остальные функции-члены будут так или иначе завязаны на адресе объекта
alex_x_x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить ip-адрес по почте. D.O.G Общие вопросы Delphi 4 13.12.2010 12:13
ООП - получить еще не созданный объект в дочернем классе Cronos20 PHP 7 30.11.2010 01:09
Шаблонные функции в классе Impuls1989 Общие вопросы C/C++ 5 20.09.2010 09:04
Как получить IP-адрес сайта? badgo Общие вопросы .NET 2 19.01.2010 05:42
Получить адрес метода Altera Общие вопросы Delphi 2 02.10.2009 13:43