Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по классам C++.

487
22 февраля 2004 года
ddnh_bc
301 / / 16.09.2003
Всем привет!

Совсем недавно столкнулся с проблемой и пока не могу ее разрешить, поскольку с подобным ранее не сталкивался.

Ситуация в следующем:
к примеру,
typedef void (__stdcall *f1)(void);

class _myclass
{
private:
f1 external;
public:
void f2(void);

_myclass();
~_myclass();
};

_myclass::f2(void){}

_myclass::_myclass(void)
{
external=f2;
}

При компиляции выдается ошибка:
error C2440: '=' :
cannot convert from 'void (__stdcall _myclass::*)(void)' to 'void (__stdcall *)(void)';

Подскажите - в чем здесь проблема - и как ее можно устанить - очень надо. А раньше с такой проблемой на MSVC сталкиваться не приходилось.
2.6K
22 февраля 2004 года
Hearse
89 / / 19.01.2004
Так вроде работает
Код:
typedef void (__cdecl *f1)(void);

class _myclass
{
    private:
    f1 external;
public:
static void f2(void);

_myclass();
~_myclass();
};
487
23 февраля 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by Hearse
Так вроде работает
Код:
typedef void (__cdecl *f1)(void);

class _myclass
{
    private:
    f1 external;
public:
static void f2(void);

_myclass();
~_myclass();
};



Спасибо за совет - действительно так скомпилилось.
Только возник другой прикол - если я объявляю функцию как static - компиляться оно компиляется - да только из static member класса я не могу вызывать non-static member класса - опять компилятор матюкается. Можно-ди как-нибудь в данной ситуации обойтись не объявляя static?

3.2K
23 февраля 2004 года
srd
50 / / 31.08.2003
// указатель на функцию-член
typedef void (_myclass::*f1)(void);

class _myclass
{
private:
f1 external;
public:
void f2(void);

_myclass();
~_myclass();
};

_myclass::f2(void){}

_myclass::_myclass(void)
{
external=&_myclass::f2;
}

Так можно обойтись без static
487
24 февраля 2004 года
ddnh_bc
301 / / 16.09.2003
Цитата:
Originally posted by srd
// указатель на функцию-член
typedef void (_myclass::*f1)(void);

class _myclass
{
private:
f1 external;
public:
void f2(void);

_myclass();
~_myclass();
};

_myclass::f2(void){}

_myclass::_myclass(void)
{
external=&_myclass::f2;
}

Так можно обойтись без static



Спасибо огромное за помощь!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог