Looks like you have a bidirectional membership relation, implemented with references (which isn't the only way to do it, see below)
If I were you I'd first think hard about the membership semantics you want and consequently how deletion is supposed to work.
What are your desired N to M relations ?
And after that deletion semantics
Most of us have more or less similar answers based on experience with filesystem operations, but yours might be different. But FS differ and some have inodes, symlinks, hardlinks, etc...
Furthermore: as indicated, you don't necessarily need to use (circular) references to design this relation. Like with symbols for references
So you could also have class variables'%instance' collecting objects for each class (i.e. all files, all directories) with identifiers as keys and object references as values. (A possible natural unique ID is just the stringification of the reference plus timestamp)
Just store the related IDs now in the objects
Of course you'll have to design the necessary delete or DESTROY methods now on your own, to clean up broken relations after an object is deleted.
Cheers Rolf
(addicted to the Perl Programming Language :)
see Wikisyntax for the Monastery
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Should I use weaken on an object attribute containing a reference to an object which contains reference back to original object?
by nysus (Parson) on Jan 21, 2024 at 16:54 UTC | |
by LanX (Saint) on Jan 21, 2024 at 16:59 UTC | |
by hv (Prior) on Jan 21, 2024 at 18:33 UTC | |
by LanX (Saint) on Jan 21, 2024 at 19:37 UTC |