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

C++ Discussion :

Héritage de type


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut Héritage de type
    Bonjour et bonne année à tous

    Voici un code qui ne compile plus après une mise à jour récente de Visual Studio 2017.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    template<typename T>
    struct A
    {
    	typedef int int_type;
    };
     
    template<typename T>
    struct B : A<T>
    {
    	void foo(int_type)
    	{}
    };
    Le type int_type de la classe de base A n'est plus hérité par B.
    Normal ? Bug ?
    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Par défaut
    Je me réponds à moi-même

    Il semble que l'erreur soit normal, et que le compilateur C++ de microsoft était trop permissif.
    Jusqu'à récemment... Ça ne m'arrange pas

    Une solution sans devoir revoir 20 ans de code avec du vulgaire copier-coller des types de base vers toutes les classes héritées ?
    C'est une verbosité qui me parait inutile, et source d'erreur à chaque copier-coller.
    D'ailleurs, c'est (c'était ?) une technique répandue et bien pratique avec les types first_argument_type, etc, définis dans les structures binary_function, unary_function, etc (disparues avec C++17, je sais).

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par défaut
    Je vois 2 options
    - ajouter using A<T>::int_type; dans la classe dérivée
    - précéder int_type de template pour aider le compilateur
    > pas sur que ceci marche

    Ton code reposait sur un détail d'implémentation du compilateur pour fonctionner, sur son laxisme, tu le payes maintenant.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WSDL] Héritage de type
    Par verbose dans le forum Services Web
    Réponses: 0
    Dernier message: 08/06/2010, 11h52
  2. héritage et type dans une fonction
    Par Zartan dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2009, 13h01
  3. [POO] Héritage et type
    Par coberle dans le forum C++
    Réponses: 5
    Dernier message: 20/11/2008, 17h37
  4. héritage et type de fille
    Par hadler dans le forum Langage
    Réponses: 10
    Dernier message: 24/09/2007, 18h07
  5. Héritage de type en SQL
    Par julie & manue dans le forum Langage SQL
    Réponses: 1
    Dernier message: 05/12/2006, 15h19

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