dec*_*iar 6 constructor struct d initialization ambiguity
我在理解如何处理D中构造函数的模糊性方面遇到了一些麻烦.
struct mydta {
int a = 2;
int b = 3;
this(int c) {
a = c / 2;
b = c * 2;
}
this(float c) {
a = cast(int) c / 2;
b = cast(int) c * 2;
}
static mydta afvec = mydta(4.3);
static mydta aivec = mydta(5);
}
Run Code Online (Sandbox Code Playgroud)
afvec 数据值为2和8.aivec 具有数据值5和3.这意味着从语法中按预期afvec调用this(float c).
但是aivec做了类似的任务aivec.a = 5.
我在此推断,发现以下内容是合法的:分别aivec = mydta(5, 4);给出aivec值5和4.
任何想法如何绕过这个隐式初始化,以便我可以访问我的构造函数:this(int c)?
对我来说这看起来像个错误.
如果你这样做:
mydta foo = mydta(5);
writeln(foo.b);
Run Code Online (Sandbox Code Playgroud)
你10按预期得到了.对于版本2.053,CTFE有很多变化,因此可能会因某些原因而被破坏.请将其发布为D问题跟踪系统中的错误.
| 归档时间: |
|
| 查看次数: |
138 次 |
| 最近记录: |