Я пытаюсь выяснить, как я могу сделать массив указателей на функции, находящиеся внутри класса. Где элемент в массиве представляет собой уникальную функцию.Массив указателей функций в C++
Tiles.h код:
class tiles: public box
{
public:
void north2east(float trans_x, float trans_y);
void north2west(float trans_x, float trans_y);
void south2east(float trans_x, float trans_y);
void south2west(float trans_x, float trans_y);
};
Tiles.cpp код:
void tiles::north2east(float trans_x, float trans_y); { }
void tiles::north2west(float trans_x, float trans_y); { }
void tiles::south2east(float trans_x, float trans_y); { }
void tiles::south2west(float trans_x, float trans_y); { }
Я слышал, что вы можете сделать это, добавив следующее в файл Tiles.cpp:
typedef void (*FUNC_ARRAY) (float trans_x, float trans_y);
FUNC_ARRAY functions[] = {
tiles::north2east,
tiles::north2west,
tiles::south2east,
tiles::south2west
}
Но это приносит мне сообщение об ошибке:
a value of type "void (tiles::*)(float trans_x, float trans_y)" cannot be used to initialize an entity of type "FUNC_ARRAY"
Подсказки и предложения по решению кода приветствуются!
Этот typedef может использоваться только для обычных функций или статических функций-членов. – Barmar
См. Http://www.warplife.com/tips/code/c++/member-pointers.html, как объявлять указатели на функции-члены. – Barmar
Вы назначаете указатель на методы и не указываете на функции, поскольку вы не можете вызывать их без экземпляра объекта. –