Jer*_*oen 2 d reference pass-by-reference
我在类testclass中有一个构造函数
@safe public nothrow this(ref Socket socket) {
// Inside class modulename.classname
this.socket = socket;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我在main方法中初始化这种类型的对象时,我遇到了一些编译错误.
void main() {
auto variablename = new modulename.classname(
cast(Socket) new TcpSocket() // main.d line 5
);
}
Run Code Online (Sandbox Code Playgroud)
错误:
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
Run Code Online (Sandbox Code Playgroud)
为什么我不能通过引用传递套接字?
你不应该通过ref传递类
默认情况下,类通过引用保存(以避免继承时出现切片问题),因此无论如何您只在两个案例中传递指针
代码中的问题是cast(Socket) new TcpSocket()
无法分配的rvalue因此无法通过ref传递
归档时间: |
|
查看次数: |
696 次 |
最近记录: |