Ada:案例子集共享一个公共属性的变体记录

Ada:案例子集共享一个公共属性的变体记录,ada,Ada,我有以下代码,其中我只希望前两个案例共享一个公共财产;但是,当我尝试使用此语法时,我发现错误“id”与第11行的声明冲突: type Shape (Which : Shape_Type := SQUARE) is record case Which is when Square => id : Natural; -- Line 11 when Turnout => i

我有以下代码,其中我只希望前两个案例共享一个公共财产;但是,当我尝试使用此语法时,我发现错误
“id”与第11行的声明冲突:

   type Shape (Which : Shape_Type := SQUARE) is
      record
      case Which is
         when Square =>
            id : Natural;   -- Line 11
         when Turnout =>
            id : Natural;   -- Line that causes error to be thrown
         when Invalid =>
            null;
      end case;
      end record;
这:

如果以后希望
案例
有一个额外属性,可以使用嵌套的
案例
(但仍然需要涵盖所有备选方案):


+1套套管;我不知道你能做到这一点,但它看起来很棒/聪明(从好的方面来说,而不是抓你的头/WTF-was-I-thinking在6个月内踢你自己)。
type Shape (Which : Shape_Type := SQUARE) is
   record
      case Which is
         when Square | Turnout =>
            id : Natural;
         when Invalid =>
            null;
      end case;
   end record;
type Shape (Which : Shape_Type := SQUARE) is
   record
      case Which is
         when Square | Turnout =>
            id : Natural;
            case Which is
               when Square =>
                  null;
               when Turnout =>
                  Deg : Natural;
               when Invalid =>
                  null;
            end case;
         when Invalid =>
            null;
      end case;
   end record;