Можно ли использовать указатель на функцию для указания на нестатическую функцию-член? Я хотел бы указать на функцию-член, которая использует нестатические объекты и переменные из класса ... статические функции-члены не могут сделать это ...
У меня есть функция-член, которая указывает на одну из четырех статических функций-членов. Проблема в том, что данные, которые будут использоваться каждой из четырех функций-членов, не являются статичными, поэтому статические функции-члены не будут к ним обращаться ...
Могу ли я указать на нестатические функции-члены?
Кроме того, экземпляр класса является указателем ... вот мой код:
class CRoutine{
int m_index;
...
BOOL (*CallRoutine(char opcode))(DWORD, float, float, float);
static BOOL Update(DWORD, float, float, float);
static BOOL Transition(DWORD, float, float, float);
static BOOL Revert(DWORD, float, float, float);
static BOOL Sequence(DWORD, float, float, float);
...
};
BOOL (*CRoutine::CallRoutine(char opcode))(DWORD, float, float, float)
{
switch ( opcode )
{
case 0:
return &CRoutine::Update;
case 1:
return &CRoutine::Transition;
case 2:
return &CRoutine::Revert;
case 3:
return &CRoutine::Sequence;
default:
return &CRoutine::Update;
}
}
BOOL CRoutine::Update(DWORD AnimSetIndex, float time, float tTime, float shift)
{
MessageBox(NULL, L"Updating", L"Routine #1", MB_OK);
CRoutine::m_index++; // Error thrown here...
return true;
}
BOOL CRoutine::Transition(DWORD AnimSetIndex, float time, float tTime, float shift)
{
MessageBox(NULL, L"Transitioning", L"Routine #2", MB_OK);
return true;
}
BOOL CRoutine::Revert(DWORD AnimSetIndex, float time, float tTime, float shift)
{
MessageBox(NULL, L"Reverting", L"Routine #3", MB_OK);
return true;
}
BOOL CRoutine::Sequence(DWORD AnimSetIndex, float time, float tTime, float shift)
{
MessageBox(NULL, L"Sequencing", L"Routine #4", MB_OK);
return true;
}
Вышеприведенная ошибка:
ошибка C2597: недопустимая ссылка на нестатический член 'CRoutine :: m_index'