Re: адрес метода в качестве ID
От: watchmaker  
Дата: 23.04.19 16:46
Оценка: +1
Здравствуйте, 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*).
Отредактировано 23.04.2019 16:49 watchmaker . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.