[fpc-pascal] Multiple inheritance is more powerful than Pascal's interfaces ?

Matt Emson memsom at interalpha.co.uk
Fri Jan 25 11:03:59 CET 2008


Andrey Gusev wrote:
> This question was posted to fpc-other, yesterday, but seems wrongful,
> in subject appropriation sense to that maillist.
> ===========
> I wish to introduce some additional (and general) functional to an
> existing (and foreign) freepascal's unit. I wouldn't to introduce any
> my own code to that foreign module, consider to development process,
> svn updation...
> With C++'s multiple inheritance quality it is easy to implement:
> ---
> #include <stdio.h>
> #include <list>
>
> using namespace std;
>
> class TObj {
> protected:
>        int fff;
> };

type
   TObj = class
    protected
        fff: integer;
    end;
>
> class TObj2: TObj {
> protected:
>        int fff2;
> };
>

type
  TObj2 = class(TObj)
  protected
      fff2: integer;
   end;

> class TIntf {
> public:
>        virtual void ppp() = 0;
> };
>

  type
     TIntf = interface
        procedure ppp;
     end;

> class TObji: public TIntf,TObj {
> public:
>        virtual void ppp();
> };


type
    TObji = class(TObje, TIntf)
    public
        procedure ppp; virtual;
    end;


> class TObj2i: public TObji,TObj2 {
> public:
>        virtual void ppp();
> };
>

type
   TObj2i = class(TObj2, Tintf) //you do not need to use multiple 
inheritance here!! TObj2 already inherits from TObj
   public
      procedure ppp; virtual;
  end;



> But i can't invent nothing like that,
> in object pascal, with him interfaces!
>

That is a translation of what you use as an example.

Alternate route is to use composition and/or aggregation.





More information about the fpc-pascal mailing list