Тип doctype определяет, какую версию HTML / XHTML использует ваш документ. Вы бы хотели использовать doctype, чтобы при запуске вашего кода через валидаторы валидаторы знали, какую версию HTML / XHTML проверять. Эта страница дает хороший обзор:
Общие доктрины, которые вы можете использовать, перечислены здесь:
Какой тип doctype вам следует использовать, зависит от кода, который вы используете, но чтобы получить представление, попробуйте запустить код через валидатор W3C и используйте раскрывающееся меню Тип документа в меню «Дополнительные параметры», чтобы попробовать разные доктрины.
Чтобы получить доступ к ss1
, вам нужен указатель внутри вашего абстрактного класса на дочерний объект. Указатель может иметь любое расширение типа, которое вы хотите определить. Поскольку у вашего связанного списка есть два разных расширения типа, вы должны объявить два дочерних указателя в вашем абстрактном классе.
module class_type
implicit none
class(*), pointer :: fnzo => null()
type, abstract :: gen
real :: ss
integer :: sdsd
class(gen), pointer :: next =>null()
type(final1), pointer :: child
end type
type, extends(gen) :: final1
real :: ss1
end type final1
type, extends(gen) :: final2
real :: x1(10)
end type final2
end module class_type
program test_class
use class_type
implicit none
class(gen), pointer :: test
type(final1), target :: test1
allocate(test, source=test1)
test1% ss1 = 20.0
test% child => test1
write(*,*) test1% ss1
write(*,*) test% child% ss1
end program test_class
Когда вы скомпилируете и выполните, вы увидите:
20.00000
20.00000