gpt4 book ai didi

struct - D 中的常量结构

转载 作者:行者123 更新时间:2023-12-02 11:37:26 24 4
gpt4 key购买 nike

我试图将一个结构作为编译时参数传递给函数。我认为代码是不言自明的。我相当确定这应该有效。但不知道为什么不行。

void main(string[] args)
{
const FooStruct fooStruct = FooStruct(5);

barFunction!fooStruct();
}

public struct FooStruct()
{
private const int value_;
@property int value() { return value_; }

this(int value) const
{
value_ = value;
}
}

public static void barFunction(FooStruct fooStruct)
{
fooStruct.value; /// do something with it.
}

最佳答案

public struct FooStruct()

在这里,您将 FooStruct 声明为模板化结构,没有变量。如果这就是您想要的,您需要在这一行引用 FooStruct!():

public static void barFunction(FooStruct fooStruct)

由于 FooStruct 不接受模板参数,因此实际上不需要将其模板化,您可能应该这样声明它:

public struct FooStruct

当您这样做时,错误消息将更改为constructor FooStruct.this (int value) const is not callable using argument types (int)。那是因为您正在调用可变构造函数。要解决此问题,请将第 3 行更改为 const FooStruct fooStruct =constFooStruct(5);。 p>

最后,当您调用 barFunction 时,您尝试将 fooStruct 作为模板参数传递 (barFunction!fooStruct())。由于 barFunction 不是模板化函数,因此失败。您可能指的是 barFunction(fooStruct)

关于struct - D 中的常量结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48150967/

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