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.

Reply via email to