Error: template Foo(T : long) does not have property 'addID'
このエラーは実際には分かりません。私はこれがリテラルタグ@property
の問題ではないと思っていた(そうではなかったようだが、@property
の機能はどちらかというと理解していない)ので、メインで一緒にすべてテストするためにいくつかの構造体を作った。
Bar
が静的
addID
を使用し、fooが静的およびテンプレートの両方である一方、
Batz
はテンプレート
addID
を使用する以外
struct Bar {
public static int addID(Bar bar1, Bar bar2) {
return bar1.get() + bar2.get();
}
private:
int ID;
public this(int ID) {
this.ID = ID;
}
public int get() {
return this.ID;
}
}
struct Batz(T: long){
public int addID(E)(E foo) {
return this.get() + foo.get();
}
private:
T ID;
alias T Type;
public this(T ID) {
this.ID = ID;
}
public T get() {
return this.ID;
}
}
void main() {
auto foo1 = Foo!int(27);
auto foo2 = Foo!int(13);
int staticTemplateAdd = Foo.addID(foo1, foo2);
auto bar1 = Bar(27);
auto bar2 = Bar(13);
int staticAdd = Bar.addID(bar1, bar2);
auto batz1 = Batz!int(27);
auto batz2 = Batz!int(13);
int templateAdd = batz1.addID(batz2);
}
これらの他のクラスは、実質的に同じです。
Foo
は、エラーをスローする唯一の構造体であり、それによって私は困惑します。私はD Templateのチュートリアル(あなたが興味を持っているならば、近くのhttps://github.com/PhilippeSigaud/D-templates-tutorial/blob/master/D-templates-tutorial.md)に従っていましたが、その例は私にとっては外国人であって、私がやろうとしていたものとは多少異なっているようでした。誰がここで何が起こっているのか知っていますか?
どのように 'addID'を呼び出そうとしていますか?あなたの質問を拡大してください。 – sigod
@sigod mainはコードの最後にあります。申し訳ありませんが、私はそれをより明白にすることができました。 –