On Wednesday, 11 May 2022 at 14:44:59 UTC, Ali Çehreli wrote:
On 5/11/22 06:57, Marvin Hannott wrote:
> I understand that D's classes solve some particular problems.
However,
> they also cause problems because they cannot be copied when
scoped. So
> how do I get virtual methods on a copyable stack object?
Problems classes solve don't usually need copying nor need to
be on the stack. Is that really necessary?
If so, I can think of two solutions:
a) Use a struct but provide "virtual" functions manually (with
function pointers like one would do in C, all of which
potentially collected in a per-type function table (a.k.a. vtbl
:) )).
b) Use classes but provide a virtual function that you call to
copy.
Ali
I appreciate the answer, don't much like the "solutions".
It's not so much about copying, but about heap allocations. Tying
virtual methods to heap allocation is kind of unfortunate. And I
am not really keen on building a poor man's vtbl.
And for my taste, scoped class objects should have value
semantics.