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 :

Construire un objet avec new et paramètre dans un template


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Construire un objet avec new et paramètre dans un template
    Bonjour,
    J'aimerais construire un objet dynamiquement dans un template, tout en lui passant des paramètres.
    Avec T pour template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void construct(nlohmann::json& json) {
           T* obj = new T(json);
    }
    Retourne :
    RessourceManager.hpp: In instantiation of ‘void RessourceManager<T>::construct(nlohmann::json&) [with T = Tile*; nlohmann::json = nlohmann::basic_json<>]’:
    RessourceManager.hpp:18:12: required from ‘RessourceManager<T>::RessourceManager(nlohmann::json&) [with T = Tile*; nlohmann::json = nlohmann::basic_json<>]’
    Manager.cpp:7:53: required from here
    RessourceManager.hpp:34:22: error: cannot convert ‘nlohmann::json {aka nlohmann::basic_json<>}’ to ‘Tile*’ in initialization
    T* obj = new T(json);
    Alors que ceci :
    nlohmann::json j("Data/Ressources/Tile.json");
    Tile* t = new Tile(j["none"]);
    compile sans soucis.
    Je ne comprend pas pourquoi, merci de votre aide !

  2. #2
    Rédacteur/Modérateur


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

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Peut-on voir la ligne d'appel qui génère l'erreur ?
    Parce qu'à priori d'après l'erreur, tu appelles construct<Tile*> alors qu'il faudrait appeler construct<Tile>.
    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.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Analyse système
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci beaucoup ! C'était exactement ça.
    Bon, en vérité construct était dans une classe template, mais effectivement je créer ma classe template avec un pointeur...

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/01/2011, 12h03
  2. Réponses: 18
    Dernier message: 17/07/2010, 15h03
  3. instancier 2 objets avec 1 seul paramétre
    Par Micke7 dans le forum Langage
    Réponses: 6
    Dernier message: 26/03/2009, 15h54
  4. Réponses: 2
    Dernier message: 10/12/2008, 02h10
  5. Objet avec options de compilation dans un makefile
    Par z980x dans le forum Systèmes de compilation
    Réponses: 4
    Dernier message: 27/09/2006, 07h17

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