LINUX.ORG.RU

История изменений

Исправление 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