class-reference type

Top  Previous  Next

What is translated > class-reference type

In Delphi methods of a class can be called without creating an instance of the class at first. That's similar to C++ static methods. But in C++ it is not possible to assign classes as values to variables and then to create instances of the class by calling a virtual constructor function from such a class reference. This is possible in Delphi however, as shown in the following example code:

type

 TBase = class

 end;

 

 TBaseClass = class of TBase;

 

 TDerived = class(TBase)

 end;

 

 TDerivedClass = class of TDerived;

 

 

function make(Base: TBaseClass): TBase;

begin

  result := Base.Create;  // will create TBase or TDerived in dependence of the passed parameter

end;

 

 

The variables TBaseClass and TDerivedClass are called "class references" of TBase or TDerived respectively.C++Builder has a special extension, which allows the creation of class references, but the creation of class instances from them isn't possible, only some other class functions can be called from them.

 

With Delphi2Cpp the code above can be translated. The way of translation is different for C++Builder and other compilers.

A creation of class instances from class references is possible only, if the class has a standard constructor.

 

 

Alternatively also the macros DECLARE_DYNAMIC and  IMPLEMENT_DYNAMIC might help.

 



This page belongs to the Delphi2Cpp Documentation

Delphi2Cpp home  Content