Здравствуйте, niXman, Вы писали:
X>но проблема в том, что компилятор выдает ворнинг: converting from ‘void (type::*)()’ to ‘void*’ [-Wpmf-conversions]
Действительно проблема, лучше бы он ошибку выдавал для такого кода :)
X>идею с использованием адресов методов в качестве ID`ов хотелось бы оставить :)
Да пожалуйста. Только зачем их к
void* пытаешься скастовать?
Да в большинстве реализаций у этих типов банально различный размер, и взаимнооднозначное преобразование не получится сделать.
https://godbolt.org/z/DbW7R- — например, на x86-64 в unix размер
void* будет 8 байт, а размер указателя на функцию будет 16. Откуда ты будешь при обратном преобразовании ещё 8 байт брать?
А на msvc ещё веселее: там указатель на функцию—член имеет переменный размер и зависит от устройства структуры (и её базовых классов) (вот 24 байта, например
https://godbolt.org/z/ZCJX-x, против восьми у
void*).