Posix требует умения конвертировать указатели функций в void*
.Стандарт C ++ не поддерживает его.
Указатели на функции-члены не являются в обычном смысле указателями, они больше похожи на смещения (даже для не виртуальной функции-члена).
Обе реализации выshow for compare
будет иметь неопределенное поведение, даже если сравнение и приведение были действительными, потому что они ничего не возвращают в случае, когда указатели не сравниваются одинаково.Вместо if(blah == bag){ return true; }
просто сделайте return (blah == bah);
.
Проблемы связаны с отбрасыванием необходимой информации о типе.Это вообще не очень хорошая идея.Почему вы отбрасываете информацию о типе, которая вам нужна?
Решение: (1) не отбрасывайте необходимую информацию о типе, и (2) измените дизайн, чтобы избавиться от этого compare
функция.Также обратите внимание на комментарий Роджера Пейта о том, что, похоже, вы спрашиваете о конкретной попытке решения, а не о проблеме.В чем проблема?
Приветствия & hth.,