Constructors not working

Ali Çehreli acehreli at yahoo.com
Fri Sep 2 19:14:47 UTC 2022


I forgot to say that you don't need to write a constructor for most 
structs because Time's constructor-generated default constructor works 
like yours and with default arguments:

struct Time {
   public int hours, minutes, seconds;

   // No constructor needed here.

   // Note 'return this;' as the last statement would be
   // mimicing how fundamental types like 'int'
   // work. However, I am getting the following warning when
   // I do that:
   //
   //   Deprecation: returning `this` escapes a reference to
   //   parameter `this` perhaps annotate the function with
   //   `return`
   //
   // For simplicity, I will just return void in this code.
   //
   void opAssign(int secos) {
     assert(secos <= 86_400);
     hours = secos / 3600;
     minutes = (secos % 3600) / 60;
     seconds = secos % 60;
   }
}

import std.stdio;

void main() {
   auto time = Time(360);
   time = 12_345;
   writeln(time);
   readln;
}

Ali



More information about the Digitalmars-d-learn mailing list