Можно ли реализовать «абстрактную» переменную внутри типа в Fortran 2003?
Я хотел бы написать абстрактный тип
type, abstract :: Vehicle
real, dimension(:), allocatable:: Wheels
contains
procedure (Compute_Weight), deferred :: VehicleWeight
end type Vehicle
это яЯ хотел бы иметь заполнитель в абстрактном типе для массива таким образом, чтобы он мог быть переопределен или переопределен в расширенном типе с чем-то вроде
type, extends(Vehicle) :: Bike
allocate(Wheels(2))
contains
procedure :: VehicleWeight => BikeWeight
end type Bike
type, extends(Vehicle) :: Car
allocate(Wheels(4))
contains
procedure :: VehicleWeight => CarWeight
end type Car
Компилятор GCC жалуется (справедливо, я думаю), и единственное решение, которое я мог найти для этой проблемы, это просто не объявлять размещаемую функцию в абстрактном типе и объявлять переменную непосредственно с правильным размером внутри типа. Тем не менее, я хотел бы иметь своего рода заполнитель для реализации реализации фундаментального свойства, описанного в Wheels (прототип). я