Проблема с доступом к дочернему объявленному типу в Фортране

Тип doctype определяет, какую версию HTML / XHTML использует ваш документ. Вы бы хотели использовать doctype, чтобы при запуске вашего кода через валидаторы валидаторы знали, какую версию HTML / XHTML проверять. Эта страница дает хороший обзор:

Не забудьте добавить doctype

Общие доктрины, которые вы можете использовать, перечислены здесь:

Рекомендуемый список DTD

Какой тип doctype вам следует использовать, зависит от кода, который вы используете, но чтобы получить представление, попробуйте запустить код через валидатор W3C и используйте раскрывающееся меню Тип документа в меню «Дополнительные параметры», чтобы попробовать разные доктрины.

Служба валидации разметки W3C

0
задан A2LBK 16 January 2019 в 12:05
поделиться

1 ответ

Чтобы получить доступ к 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
0
ответ дан newkid 16 January 2019 в 12:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: