[疑难] 模板中动态数组问题

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
哦,知道了,我以为它可以自动引用的呢。
   谢谢哦
Global site tag (gtag.js) - Google Analytics