Next: Pragma CPP_Virtual, Previous: Pragma CPP_Class, Up: Implementation Defined Pragmas
pragma CPP_Constructor ([Entity =>] LOCAL_NAME [, [External_Name =>] static_string_EXPRESSION ] [, [Link_Name =>] static_string_EXPRESSION ]);
This pragma identifies an imported function (imported in the usual way
with pragma Import
) as corresponding to a C++ constructor. If
External_Name
and Link_Name
are not specified then the
Entity
argument is a name that must have been previously mentioned
in a pragma Import
with Convention
= CPP
. Such name
must be of one of the following forms:
function
Fname return
T
function
Fname return
T'Class
function
Fname (...) return
T
function
Fname (...) return
T'Class
where T is a limited record type imported from C++ with pragma
Import
and Convention
= CPP
.
The first two forms import the default constructor, used when an object of type T is created on the Ada side with no explicit constructor. The latter two forms cover all the non-default constructors of the type. See the GNAT users guide for details.
If no constructors are imported, it is impossible to create any objects on the Ada side and the type is implicitly declared abstract.
Pragma CPP_Constructor
is intended primarily for automatic generation
using an automatic binding generator tool.
See Interfacing to C++ for more related information.
Note: The use of functions returning class-wide types for constructors is currently obsolete. They are supported for backward compatibility. The use of functions returning the type T leave the Ada sources more clear because the imported C++ constructors always return an object of type T; that is, they never return an object whose type is a descendant of type T.