digitalmars.D.learn - Is there a generic type such as void* or C#'s object?
- Jack (10/10) Feb 05 2021 in C/C++ you have void* and C#'s object, to create a variable to
- Paul Backus (7/17) Feb 05 2021 If it's just for classes, you can use `Object` [1], which is the
- H. S. Teoh (9/23) Feb 05 2021 D has void*.
- Jack (1/1) Feb 07 2021 Thanks for your answers guys!
class A { object foo; } and var a = new A(); a.foo = any class...; does D have something like this or template parameters are used instead of?
Feb 05 2021
On Saturday, 6 February 2021 at 02:01:28 UTC, Jack wrote:class A { object foo; } and var a = new A(); a.foo = any class...; does D have something like this or template parameters are used instead of?If it's just for classes, you can use `Object` [1], which is the universal base class. For absolutely any type at all, you can try using `Variant` [2], though it has a few limitations. [1] http://druntime.dpldocs.info/object.Object.html [2] http://phobos.dpldocs.info/std.variant.Variant.html
Feb 05 2021
On Sat, Feb 06, 2021 at 02:01:28AM +0000, Jack via Digitalmars-d-learn wrote:class A { object foo; } and var a = new A(); a.foo = any class...; does D have something like this or template parameters are used instead of?D has void*. But if you have a class, it's probably better to use the universal base class Object, which is more type-safe. Alternatively, check out std.variant, which provides true dynamic typing as a tagged union. T -- "You know, maybe we don't *need* enemies." "Yeah, best friends are about all I can take." -- Calvin & Hobbes
Feb 05 2021