Czy możliwe jest zaimplementowanie zmiennej „abstrakcyjnej” w typie w Fortran 2003?
Chciałbym napisać abstrakcyjny typ
type, abstract :: Vehicle
real, dimension(:), allocatable:: Wheels
contains
procedure (Compute_Weight), deferred :: VehicleWeight
end type Vehicle
chciałbym mieć symbol zastępczy w typie abstrakcyjnym dla tablicy w taki sposób, aby mógł być nadpisany lub przedefiniowany w rozszerzonym typie za pomocą czegoś takiego jak
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
Kompilator GCC skarży się (słusznie zgaduję), a jedynym rozwiązaniem, jakie mogłem znaleźć w tym problemie, jest nie zadeklarowanie funkcji alokowanej w typie abstrakcyjnym i zadeklarowanie zmiennej bezpośrednio z poprawnym rozmiarem wewnątrz typu. Niemniej jednak chciałbym mieć pewien symbol zastępczy, aby wymusić implementację podstawowej własności opisanej przez Wheels (prototyp). ja