This is my class's package:
(in-package :cl-user)
(defpackage foo
(:use :cl)
(:export :bar))
(in-package :foo)
(defclass bar ()
(baz))
I can create an instance of bar
in package cl-user
.
CL-USER> (defvar f)
F
CL-USER> (setf f (make-instance 'foo:bar))
#<FOO:BAR {10044340C3}>
But I can't access the member baz
. Calling slot-value
like so ...
CL-USER> (slot-value f 'baz)
... results in this error message:
When attempting to read the slot's value (slot-value), the slot
BAZ is missing from the object #<FOO:BAR {10044340C3}>.
[Condition of type SIMPLE-ERROR]
I already tried to add baz
to the :export
list but that does not work either.
How to export slots and accessors from packages?
You can't export slots and accessors.
In Common Lisp you can export symbols.
So, export the symbol
BAZ
which names the slot.Then in package
CL-USER
:Unexported you have to write:
If you import the symbol into the package
CL-USER
: