История изменений
Исправление monk, (текущая версия) :
Делая static_cast для потомков к родителям и reinterpret_cast вообще
Тоже можно. Как-то так:
(defclass a () ())
(defclass b (a) ())
(defmethod test ((a a)) 1)
(defmethod test ((b b)) 2)
(test (make-instance 'b)) => 2
;; А в следующей строчке cast
(funcall (closer-mop:method-function
(find-method #'test () (list (find-class 'a))))
(list *b*) nil) => 1
Исходная версия monk, :
Делая static_cast для потомков к родителям и reinterpret_cast вообще
Тоже можно. Как-то так:
(defclass a () ())
(defclass b (a) ())
(defmethod test ((a a)) 1)
(defmethod test ((b b)) 2)
(test (make-instance 'b)) => 2
;; А в следующей строчке cast
(funcall (closer-mop:method-function (find-method #'test () (list (find-class 'a)))) (list *b*) nil) => 1