On Saturday, 18 February 2017 at 09:33:25 UTC, biozic wrote:
On Friday, 17 February 2017 at 23:35:33 UTC, Jean Cesar wrote:
On Friday, 17 February 2017 at 23:31:41 UTC, Adam D. Ruppe wrote:
On Friday, 17 February 2017 at 23:11:25 UTC, Jean Cesar wrote:
so I changed the code to use interface but how would I do so I could use the constructor in the same way as such a C ++ code?

Interfaces + mixin templates give you something very similar to multiple inheritance. You can have named functions in the mixin templates that do the work of the constructor, then call them from the real constructor.


Yes I saw here that it uses interface to make multiple inheritance just like C#, but I did not understand what would this mixing?

A mixin can be used to provide an base implementation for the methods of an interface, along with data members, so that you don't have to define it in every class that implements the interface.

An example : https://dpaste.dzfl.pl/b656851e5c51



I tried to use it in the same way but I did not understand correctly because to simulate, alias in this code I had already defined the classes as interfaces but I did not understand how these constructors should be declared for later use ..

import std.stdio;
import std.string;

/**************************************************************************
* Source: Digital MArs D * * Name: StringHerancaMulti.d * * Concept Aplied: Herança Multipla usando Classe com 4 variáveis string * * Autor: Jean Zonta *
**************************************************************************/

class Test1
{
 protected string _msg1;

   this( string msg1 )
   {
     _msg1=msg1;
   }
};

interface Test2
{
   protected string _msg2;

 // Provide an overridable implementation
 mixin template Impl()
 {
   this( string msg2 )
   {
    _msg2=msg2;
   }
 }
};

interface Test3
{
 protected string _msg3;

 // Provide an overridable implementation
 mixin template Impl()
 {
   this( string msg3 )
   {
    _msg3=msg3;
   }
 }
};

class Test4: Test1, Test2, Test3
{
  mixin Test2.Impl;
  mixin Test3.Impl;

 string _msg4;

 this( string msg1, string msg2 , string msg3, string msg4 )
 {
  super(msg1,msg2,msg3);
  this._msg1 = msg1;
  this._msg2 = msg2;
  this._msg3 = msg3;
  this._msg4 = msg4;
 }

 override void show()
 {
  writeln(_msg1,_msg2,_msg3,_msg4);
 }
};

void main()
{
Test4 teste = new Teste4("\n\tTeste1 ","Teste2 ","Teste3 ","Teste4");
 teste.show();
 return 0;
}

Reply via email to