Есть описание класса:
file = sys.cpp:
#include "sys.hpp"
////////////////////////////////////////////////////////////////////////////////
void Tsys::my_func( void )
{
}
file = sys.hpp:
#ifndef SYS_H
#define SYS_H
typedef void(*func_ptr)( void );
///////////////////////////////////////////////////////////////////////////////
class Tsys
{
private:
public:
func_ptr my_func_ptr;
void my_func( void );
};
в файле algo.cpp создается экземпляр
#include "sys.hpp"
Tsys sysA;
void a( void ) {}
int _tmain(int argc, _TCHAR* argv[])
{
sysA.my_func_ptr = sysA.my_func;
return 0;
}
но на строку sysA.my_func_ptr = sysA.my_func; ругается что MSVC2005 что Borland C++ v5.02
MSVC:
error C3867: 'Tsys::my_func': function call missing argument list; use '&Tsys::my_func' to create a pointer to member
error C2440: '=' : cannot convert from 'void (__thiscall Tsys::* )(void)' to 'func_ptr'
There is no context in which this conversion is possible
Borland C++ v5 Error: algo.cpp(144,23):Member function must be called or its address taken
вопрос: как проавильно член класса-указатель на функцию проиннициализировать на метод этого же класса ?