On Sunday, 7 May 2023 at 21:04:05 UTC, Inkrementator wrote:
Open question to everybody: What you're opinion on using opCast for this? Since it's a type conversion, it seems fitting to me.
Can't converting without explicitly specifying in D is a big shortcoming in my opinion. There is such a thing as implicitly convertion though, but it's very confusing. I don't see that simplicity in C++ in the D codes!
```CPP #include <iostream> using namespace std; struct Fraction { int num, den; Fraction(int n, int d) { num = n; den = d; } // Conversion operator: return float value of fraction operator float() const { return float(num) / float(den); } }; int main() { Fraction f(2, 5); float val = f; cout << val << '\n'; // 0.4 return 0; } ``` You should do the same in D like this: ```d struct Fraction { int num, den; this(int n, int d) { num = n; den = d; } // Cast Expression : convert float value of fraction auto opCast(T : float)() const { return cast(float)(num) / cast(float)(den); } } import std.stdio; int main() { auto f = Fraction(2, 5); float val = cast(float)f; val.writeln; //0.4 return 0; } ``` SDB@79