首页 > 解决方案 > 包含模板结构的模板接口

问题描述

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

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

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;
  }
}

浏览D书中的在线编程并不包括实现这种情况。

标签: d

解决方案


这是你的错误:

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

resulta()return TemplateStruct,它是一个模板,而不是一个完整的类型。你需要指定它的模板参数,就像你在class Foo

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

推荐阅读