タグ付けされたレコード タイプを含むマップ コンテナが必要なため、このプログラムを作成しましたが、GNAT コンパイラはコンパイルしません。
type http_response is tagged private;
package map_package is new Ada.Containers.Ordered_Maps
(Key_Type => Unbounded_String,
Element_Type => http_response);
また、コンパイルエラーがあります:
http.ads:47:04: instantiation error at a-coorma.ads:199
http.ads:47:04: premature use of type with private component
http.ads:47:105: premature use of private type
実際、マップには http_response タイプから継承する他のタグ付きレコード タイプが含まれるため、ポリモーフィズムを使用したいと考えています。
このコードを修正するには?
次のようにコードを修正すると:
package map_package is new Ada.Containers.Ordered_Maps
(Key_Type => Unbounded_String,
Element_Type => http_response'Class);
この種のエラーが発生します:
http.ads:47:04: instantiation error at a-coorma.ads:195
http.ads:47:04: class-wide subtype with unknown discriminants in component declaration
http.ads:47:04: instantiation error at a-coorma.ads:199
http.ads:47:04: premature use of type with private component
http.ads:47:118: premature use of type with private component