Re: Cannot get this C++ example migrated to D

2023-04-16 Thread Skippy via Digitalmars-d-learn
On Sunday, 16 April 2023 at 08:38:55 UTC, Ali Çehreli wrote: On 4/16/23 00:46, Skippy wrote: > I wish D had value type classes as well. That cannot work due to the slicing problem. C++ cannot have value type classes either for the same reason. The difference there is that the enforcement is b

Re: Cannot get this C++ example migrated to D

2023-04-16 Thread Ali Çehreli via Digitalmars-d-learn
On 4/16/23 00:46, Skippy wrote: > I wish D had value type classes as well. That cannot work due to the slicing problem. C++ cannot have value type classes either for the same reason. The difference there is that the enforcement is by guidelines (e.g. "never pass class objects by value to func

Re: Cannot get this C++ example migrated to D

2023-04-16 Thread Mike Parker via Digitalmars-d-learn
On Sunday, 16 April 2023 at 07:46:53 UTC, Skippy wrote: I wish D had value type classes as well. I like the distinction between class and struct in D. It encourages you to think harder about how you intend to use your types. In C++, there may as well only be one or the other; the distincti

Re: Cannot get this C++ example migrated to D

2023-04-16 Thread Skippy via Digitalmars-d-learn
On Sunday, 16 April 2023 at 06:39:17 UTC, Mike Parker wrote: `t1` is default-initialized, so it's null. test t1, t2 = new test(); silly me. I should have picked that up myself. thanks. Ditto for t3. Classes are reference objects, not value objects, so you must explicitly instantiate inst

Re: Cannot get this C++ example migrated to D

2023-04-15 Thread Mike Parker via Digitalmars-d-learn
On Sunday, 16 April 2023 at 05:58:39 UTC, Skippy wrote: These lines aren't necessary: // ?? int counter; // ?? static this() { counter = test.objCnt; } `t1` is default-initialized, so it's null. test t1, t2 = new test(); Ditto for t3. Classes are reference objects, not value obje

Cannot get this C++ example migrated to D

2023-04-15 Thread Skippy via Digitalmars-d-learn
Anyone wanna try converting this C++ example to D? (I tried, but getting nowhere.. so far). // --- C++ example - working - #include using std::cout; class test { private: int objNo; static int objCnt; public: test() { objNo = ++objCnt; } ~test() {