Bonjour a tous.
J explore les possibilites de Fortran 2003/2008 en programmation objet et
je fais fasse a une situation que je ne comprends pas...
Voici un petit exemple ou je cree une classe points(x,y) avec 2 methodes associees.
Les methodes sont censees faire exactement la meme chose, a savoir creer un nouvel objet point a gauche de
l objet parent...
Dans la methode getleft1, j' assigne explicitement les variables x et y du nouvel objet. Les choses sont relativement simple puisque je n ai que x et y a definir.
Mais, bon il peut arriver que l objet soit plus complexe dont j ai voulu tester dans la methode 2 une initialisation du nouvel objet au contenu de l objet parent...mais ca ne semble pas marcher... j obtiens une valeur aleatoire pour la variable y qui n etait pas assignee explicitement.
Quelqu un pour m eclairer sur ce sujet?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 module points2d implicit none type :: points integer :: irow integer :: icol contains procedure :: left => getleft procedure :: left2 => getleft2 end type points contains type(points) function getleft(this) class(points), intent(in) :: this getleft%irow = this%irow getleft%icol = this%icol end function type(points) function getleft2(this) class(points) :: this getleft2 = this getleft2%icol = this%icol end function end module points2d program test use points2d implicit none type(points) :: center type(points) :: left center = points(1,1) print*, center%irow, center%icol left = center%left() print*, left%irow, left%icol left = center%left2() print*, left%irow, left%icol end program
Partager