相关疑难解决方法(0)

接口和模板函数

我试图在两个不同的类上建立接口,其中函数的实现位于子类中。它适用于常规函数,但不幸的是不适用于模板函数。

参见示例:

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)

d function-templates

3
推荐指数
1
解决办法
95
查看次数

标签 统计

d ×1

function-templates ×1