wxPerl et sa documentation sont un peu un hackathon. Par exemple, de nombreux paquets sont définis uniquement dans les composants XS de la bibliothèque, il est donc pratiquement impossible de déboguer. (C'est pourquoi votre objet Wx::Point
est une référence scalaire, la valeur scalaire est juste une poignée sur les données de l'objet.)
J'ai cherché et échoué à trouver une partie de la documentation dont je me souviens de quelque part qui explique que WxPerl accède à la fois attributs et méthodes de la même manière, par un appel de méthode Perl
Si vous regardez le wxPoint
Class Reference vous verrez qu'il y a trois constructeurs: un sans paramètre qui retourne un point à [0,0], un qui prend coordonnées x et y et un constructeur de copie qui accepte un objet wxPoint
existant et utilise ses coordonnées. Le dernier d'entre eux ne fonctionne pas dans wxPerl. Il y a beaucoup de bizarreries semblables que vous devez découvrir par vous-même, parce que la documentation est épouvantable
De même, les différents « opérateurs » ne sont pas pertinents pour wxPerl. Ils pourraient travailler si l'opérateur était surchargé, mais wxPerl est construit pour la vitesse cela a donc été mis au rebut
Comme d'autres ont décrit, les deux attributs x
et y
doivent être accessibles comme les appels de méthode. (De même pour les attributs de toutes les autres classes wxPerl.)
vous pouvez donc écrire
my $x = $p->x;
my $y = $p->y;
Ou, si vous voulez obtenir froussard
my ($x, $y) = map { $p->$_ } qw/ x y /;
Ceci est juste une supposition, mais cela fonctionne-t-il: 'my $ p = $ f-> GetPosition(); $ p-> x(); $ p-> y(); ' – stevieb
Exactement! Merci – stepan
J'ai fait une réponse maintenant que vous avez confirmé le fonctionnement. – stevieb