在 D 中构造结构
Const struct in D
我正在尝试将结构作为编译时参数传递给函数。
我认为代码是不言自明的。我相当确定这应该有效。但是不知道为什么不行
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 =
const
FooStruct(5);
.
最后,当您调用 barFunction
时,您正试图将 fooStruct
作为模板参数 (barFunction!fooStruct()
) 传递。由于 barFunction
不是模板函数,因此失败。你的意思可能是 barFunction(fooStruct)
.
我正在尝试将结构作为编译时参数传递给函数。 我认为代码是不言自明的。我相当确定这应该有效。但是不知道为什么不行
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 =
const
FooStruct(5);
.
最后,当您调用 barFunction
时,您正试图将 fooStruct
作为模板参数 (barFunction!fooStruct()
) 传递。由于 barFunction
不是模板函数,因此失败。你的意思可能是 barFunction(fooStruct)
.