gpt4 book ai didi

reference - D语言中不能通过引用传递

转载 作者:行者123 更新时间:2023-12-02 06:35:42 26 4
gpt4 key购买 nike

我在类 testclass 中有一个构造函数

@safe public nothrow this(ref Socket socket) {
// Inside class modulename.classname
this.socket = socket;
}
但是,当我在主方法中初始化这种类型的对象时,出现了一些编译错误。
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 传递类

默认情况下,类通过引用保留(以避免继承时出现切片问题),因此无论如何您都只在两种情况下传递指针

您代码中的问题是 cast(Socket) new TcpSocket()是一个不能被赋值的右值,因此不能被 ref 传递

关于reference - D语言中不能通过引用传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com