cted_members
this c++ class
class C {
public:
int a;
void public_proc();
protected:
int b;
int protected_func();
private:
bool c;
void private_proc();
};
become in Ada
private with Ada.Finalization;
package CPP is
type Public_Part is abstract tagged record -- no objects of this type
A: Integer;
end record;
procedure Public_Proc (This: in out Public_Part);
type Complete_Type is new Public_Part with private;
-- procedure Public_Proc (This: in out Complete_Type); -- inherited, implicitly defined
private -- visible for children
type Private_Part; -- declaration stub
type Private_Part_Pointer is access Private_Part;
type Private_Component is new Ada.Finalization.Controlled with record
P: Private_Part_Pointer;
end record;
overriding procedure Initialize (X: in out Private_Component);
overriding procedure Adjust (X: in out Private_Component);
overriding procedure Finalize (X: in out Private_Component);
type Complete_Type is new Public_Part with record
B: Integer;
P: Private_Component; -- must be controlled to avoid storage leaks
end record;
not overriding procedure Protected_Proc (This: Complete_Type);
end CPP;
You have to declare a different type for the public part, a different type for the private part and finally a third different type that has both parts. TOP KEK.