【发布时间】:2013-11-29 23:05:36
【问题描述】:
我在类 testclass 中有一个构造函数
@safe public nothrow this(ref Socket socket) {
// Inside class modulename.classname
this.socket = socket;
}
然而,当我在我的 main 方法中初始化这种类型的对象时,我得到了一些编译错误。
void main() {
auto variablename = new modulename.classname(
cast(Socket) new TcpSocket() // main.d line 5
);
}
错误:
main.d(5): Error: constructor testmodule.testclass.this (ref
Socket socket) is not callable using argument types (Socket)
main.d(5): Error: no constructor for testclass
为什么我不能通过引用传递套接字?
【问题讨论】:
-
通过 ref 传递
socket在这种情况下是没有意义的,因为你从来没有分配给它。Socket类型已经是一个 ref(隐藏的指针),因此通过 ref 传递它最终成为对引用的引用(例如,指向指针的指针)。
标签: reference pass-by-reference d