Search code examples
classtemplatesd

Extend Classes in Template (D)


How do I extend a class that's inside a template in D?

template A {
    abstract class B {}
}
class C : B {}

How so I extend B, from outside A?


Solution

  • Your code doesn't compile, you need to specify template arguments.

    a.d:3: parenthesized TemplateParameterList expected following TemplateIdentifier
    

    I'm not sure if you want C to be a template too. The following outputs 0.

    import std.stdio;
    
    template A(T) {
      abstract class  B {
        public T f() {
          return T.init;
        } 
      }
    }
    
    class C : A!(int).B {}
    
    int main() {
      writeln((new C()).f());
      return 0;
    }