给定一个结构模板,以及一个模板接口,它有一个返回结构模板的成员以及另一个不同类型的成员,设计和实现的正确方法是什么?
我有以下内容,但是我在实现时遇到了编译错误:
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一书并未涉及实施此类情况。
答案 0 :(得分:1)
这是你的错误:
interface IFoo(V) {
TemplateStruct resulta(); // <== Here
V resultb();
}
resulta()
返回TemplateStruct
,这是一个模板,而不是完整类型。您需要指定其模板参数,就像在class Foo
中一样:
interface IFoo(V) {
TemplateStruct!(bool, string) resulta();
V resultb();
}