包含模板结构的模板接口

时间:2018-05-04 02:49:11

标签: d

给定一个结构模板,以及一个模板接口,它有一个返回结构模板的成员以及另一个不同类型的成员,设计和实现的正确方法是什么?

我有以下内容,但是我在实现时遇到了编译错误:

struct TemplateStruct(T, U) {
  T a;
  U b;
}

interface IFoo(V) {
  TemplateStruct resulta();
  V resultb();
}

class Foo : IFoo!int {
  TemplateStruct!(bool, string) resulta() {
    return TemplateStruct!(bool, string)(true, "a");
  }

  int resultb() {
    return 1;
  }
}

浏览在线Programming in D一书并未涉及实施此类情况。

1 个答案:

答案 0 :(得分:1)

这是你的错误:

interface IFoo(V) {
    TemplateStruct resulta(); // <== Here
    V resultb();
}

resulta()返回TemplateStruct,这是一个模板,而不是完整类型。您需要指定其模板参数,就像在class Foo中一样:

interface IFoo(V) {
    TemplateStruct!(bool, string) resulta();
    V resultb();
}