Use class template as a type

Jerry via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Nov 29 07:56:23 PST 2016


On Monday, 28 November 2016 at 11:26:41 UTC, dm wrote:
> ```
> abstract class MyClass(T)
> {
>   public:
>    @property const(T) value(){return _value;}
>    @property void value(T val){_value = val;}
> ...
>   private:
>    T _value;
> ...
> }

To avoid having to use the Object class directly you can make an 
base class of the class template.
Like:

```
abstract class MyClass {}
abstract class MyClassImpl(T)
{
public:
     @property const(T) value(){return _value;}
     @property void value(T val){_value = val;}
  ...
    private:
     T _value;
  ...
}

MyClassInt and float inherits from MyClassImpl
```

And use it like:

```
void main() {
    MyClass[] objs;
    objs ~= new MyClassFloat();
    objs ~= new MyClassInt();
}
```



More information about the Digitalmars-d-learn mailing list