Интерфейс шаблона, содержащий структуру шаблона - PullRequest
0 голосов
/ 04 мая 2018

Учитывая шаблон структуры и интерфейс шаблона, в котором есть элемент, который возвращает шаблон структуры, а также другой элемент другого типа, каков правильный способ разработки и реализации?

У меня следующее, но я получаю ошибки компиляции при реализации:

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 не охватывает реализацию подобной ситуации.

1 Ответ

0 голосов
/ 04 мая 2018

Вот ваша ошибка:

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

resulta() возвращает TemplateStruct, который является шаблоном, а не полным типом. Вам нужно будет указать параметры его шаблона, как в class Foo:

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