IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

D Discussion :

alias this et héritage


Sujet :

D

  1. #1
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut alias this et héritage
    Hello,

    J'ai du code qui ressemble à
    Code D : 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
    abstract class SceneElement {
    public:
     
    	alias node this;
     
    	@property node() {
    		return mNode;
    	}
     
    	@property node() const pure nothrow {
    		return mNode;
    	}
     
    private:
     
    	SceneNode mNode;
    }
     
    class SceneNode {
    public:
     
    	@property position() const {
    		return mPosition;
    	}
     
    	@property position(vec3 p) {
    		foreach(child; mChilds) {
    			child.move(vec3(1.0f), p - mPosition);
    		}
    		mPosition = p;
    	}
     
    private:
     
    	vec3 mPosition = vec3(0.0f);
    }
     
    class Camera : SceneElement { }
     
    // cam une Camera attachée à un SceneNode
    cam.position = vec3(50.0f, 20.0f, 50.0f);

    La doc ne dit rien (ou du moins je n'ai pas trouvé) sur les alias this et l'héritage.
    Pourquoi est-ce que ça marche pas ? ("Camera ne possède pas de propriété position").
    Si je bouge alias node this; de SceneElement à Camera ça marche.

  2. #2
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2009
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2009
    Messages : 349
    Points : 590
    Points
    590
    Par défaut
    Salut tu t'es trompé a mon avis sur alias node this
    node est une méthode dans ton exemple.

    par contre, considérons qu'une classe Node existe
    et que tu fais
    alias Node this

    tu vas rendre les méthodes de Nodes disponible comme si elles appartenaient à la classe pointé par this

  3. #3
    Expert confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    1 711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2012
    Messages : 1 711
    Points : 4 442
    Points
    4 442
    Par défaut
    D'après la doc c'est possible, et si je met l'alias dans Camera (qui hérite de SceneElement) ça marche.
    Mais si l'alias est dans la classe de base (SceneElement), en manipulant un objet Camera, je n'est pas accès aux méthodes de SceneNode.

Discussions similaires

  1. Héritage this et base
    Par Magohamoths dans le forum C#
    Réponses: 9
    Dernier message: 09/11/2011, 16h09
  2. Generics, héritage, et return this
    Par LeGritche dans le forum Général Java
    Réponses: 4
    Dernier message: 28/09/2011, 10h34
  3. Comportement bizarre du "this" avec de l'héritage
    Par fcx35 dans le forum Débuter
    Réponses: 3
    Dernier message: 05/02/2009, 19h32
  4. Héritage entre Forms
    Par BarBal dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 17h44
  5. comment creer un alias dynamique avec BDE et ODBC
    Par david33 dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/07/2002, 11h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo