[疑难] 模板中动态数组问题
myyxm
2007-11-05
当把带动态数组的模板放在一个模块里,在把主函数放在另一个模块里,在链接中就报错了。
module a; private import std.stdio; final class stack(T) { private int __index = -1; private T [] __object; public this() { __object.length = 10; } public void push(T data) { __object[++__index] = data; } public T top() { //assert(__index >= 0); return __object[__index]; } public void pop() { if(__index >=0) -- __index; } public bool isempty() { return __index < 0; } public int count() { return __index+1; } } int main() { stack!(int) s = new stack!(int)(); s.push(5); writefln(s.isempty); writefln(s.count); return 0; } 这样可以编译通过,但如下就不行了,不知道为什么? module a private import std.stdio; final class stack(T) { private int __index = -1; private T [] __object; public this() { __object.length = 10; } public void push(T data) { __object[++__index] = data; } public T top() { //assert(__index >= 0); return __object[__index]; } public void pop() { if(__index >=0) -- __index; } public bool isempty() { return __index < 0; } public int count() { return __index+1; } } module b; import a; int main() { stack!(int) s = new stack!(int)(); s.push(5); writefln(s.isempty); writefln(s.count); return 0; } |
|
tomqyp
2007-11-05
怎么会编译不出来?你这样试试
dmd b.d a.d 另外module a记得加上";"号. |
|
myyxm
2007-11-05
哦,知道了,我以为它可以自动引用的呢。
谢谢哦 |