Pragma CPP_Class (GNAT Reference Manual) (original) (raw)
2.37 Pragma CPP_Class ¶
Syntax:
pragma CPP_Class ([Entity =>] LOCAL_NAME);
The argument denotes an entity in the current declarative region that is declared as a record type. It indicates that the type corresponds to an externally declared C++ class type, and is to be laid out the same way that C++ would lay out the type. If the C++ class has virtual primitives then the record must be declared as a tagged record type.
Types for which CPP_Class
is specified do not have assignment or equality operators defined (such operations can be imported or declared as subprograms as required). Initialization is allowed only by constructor functions (see pragma CPP_Constructor
). Such types are implicitly limited if not explicitly declared as limited or derived from a limited type, and an error is issued in that case.
See Interfacing to C++ for related information.
Note: Pragma CPP_Class
is currently obsolete. It is supported for backward compatibility but its functionality is available using pragma Import
with Convention
= CPP
.