我试图在两个不同的类上建立接口,其中函数的实现位于子类中。它适用于常规函数,但不幸的是不适用于模板函数。
参见示例:
import std.conv;
import std.stdio;
interface Num {
T num(T)();
}
class A : Num {
T num(T)() {
return 5.to!T;
}
}
class B : Num {
T num(T)() {
return 2.to!T;
}
}
void main() {
auto a = new A();
auto b = new B();
Num somea = a;
Num someb = b;
writeln(a.num!int());
writeln(somea.num!int());
writeln(someb.num!int());
writeln(somea.num!string());
writeln(someb.num!string());
}
Run Code Online (Sandbox Code Playgroud)
(也可以在线获取: https: //run.dlang.io/is/Nl1edV)
结果是一个错误:
onlineapp.d:26: error: undefined reference to '_D9onlineapp3Num__T3numTiZQhMFZi'
onlineapp.d:27: error: undefined reference to '_D9onlineapp3Num__T3numTiZQhMFZi' …Run Code Online (Sandbox Code Playgroud)