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 :

error C2512 lors d'une tentative d'instanciation de classe


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 42
    Par défaut error C2512 lors d'une tentative d'instanciation de classe
    j'ai une erreur quand j'essai de creer un objet de cette classe :

    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
    #ifndef Game_Graphic_DirectX11Renderer_h
    #define Game_Graphic_DirectX11Renderer_h
     
    #include "IRenderer.h"
     
     
    namespace Game {
    namespace Graphic {
     
    class DirectX11Renderer : public IRenderer 
    {
    	DirectX11Renderer():IRenderer(){}
    	~DirectX11Renderer(){}
    };
     
    } /* End of namespace Game::Graphic */
    } /* End of namespace Game */
     
    #endif // Game_Graphic_DirectX11Renderer_h
    voici IRenderer :
    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
    #ifndef Game_Graphic_IRenderer_h
    #define Game_Graphic_IRenderer_h
    #pragma once
    #include <vector>
     
    #include <Game/Graphic/ITexture.h>
    #include <Game/Graphic/IMesh.h>
     
     
    namespace Game {
    	namespace Graphic {
    		enum RendererType
    		{
    			DX9,
    			DX10,
    			DX11,
    			OpenGL
    		};
    		class IRenderer {
     
    		 public:
     
    			 ITexture* LoadTexture(){return 0;}
     
    			 IMesh* BuildMesh(){return 0;}
     
    			 RendererType GetType();
    		//protected:
    			IRenderer(){}
    			~IRenderer(){}
     
    		 protected:
    			RendererType type;
    		    std::vector< IMesh* > renderMeshes;
    			time_t timeOfLastRender;
    		};
     
    	} /* End of namespace Game::Graphic */
    } /* End of namespace Game */
     
    #endif // Game_Graphic_IRenderer_h
    quel est le probleme ? je ne trouve pas

    voici ma ligne qui pose probleme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DirectX11Renderer* renderer11 = new DirectX11Renderer();

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Il y a peut-être une paire de parenthèse en trop (FAQ).

    PS : Si IRenderer est une interface, alors elle ne devrait pas avoir de constructeur, et son destructeur ainsi que ses méthodes devraient être virtuels, non ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 42
    Par défaut
    A la base elle l'était (abstraite) mais mon but est d'avoir des fonction communes a tous les renderer : render , build mesh,...
    qui sont des fonctions qui devront pouvoir etre appellée sans savoir si le renderer est directx ou opengl ,... ou tout autre
    j'ai donc besoin d'avoir un moyen de transformer ces objets en un seul commun et donc il faut qu'il soit instanciable ...

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Citation Envoyé par kev753 Voir le message
    A la base elle l'était (abstraite) mais mon but est d'avoir des fonction communes a tous les renderer : render , build mesh,...
    qui sont des fonctions qui devront pouvoir etre appellée sans savoir si le renderer est directx ou opengl ,... ou tout autre
    j'ai donc besoin d'avoir un moyen de transformer ces objets en un seul commun et donc il faut qu'il soit instanciable ...
    Alors ce n'est plus une interface, juste une classe parente.
    Ça vaudrait peut-être le coup de la nommer autrement, non ?

    Au fait, est-ce que le constructeur de DirectX11Renderer ne serait pas private ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 42
    Par défaut
    pour le nom j'y réflechis parce que meme si ce n'est pas une interface il n'y arua jamais aucun objet IRenderer, en tout cas aucun créé par son constructeur ...
    et si , normalement il doit etre en private le constructeur mais pour l'instant je l'ai mis en public au cas ou ce serais le probleme ...

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Le constructeur de DirectX11Renderer est actuellement en private (visibilité par défaut des membres d'une class) et c'est justement le souci. Il devrait être publique si tu souhaites l'instancier depuis l'extérieur.

    Quant à IRenderer, je crois que tu devrais te renseigner sur le polymorphisme, qui te permettrait d'utiliser en tant que IRenderer un objet qui ne fait qu'implémenter son interface. Donc IRenderer n'aurait besoin ni de constructeur, ni de méthodes concrètes.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 42
    Par défaut
    je vais créer un post concernant l'héritage et le polymorphisme avec une version théorique

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 42
    Par défaut
    Citation Envoyé par cob59 Voir le message
    Il y a peut-être une paire de parenthèse en trop (FAQ).
    Euh peut etre mais je ne vois pas où ...?

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Citation Envoyé par kev753 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DirectX11Renderer* renderer11 = new DirectX11Renderer;

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2009
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2009
    Messages : 42
    Par défaut
    j'y ai pensé mais nn ca ne change rien ...

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

Discussions similaires

  1. [XL-97] Erreur 13 lors d'une tentative de suppression de doublons d'une listbox
    Par Michel Delapouaitte dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 15/04/2009, 11h28
  2. Problème lors d'une tentative d'IMPORT
    Par muchmorehuman dans le forum Oracle
    Réponses: 3
    Dernier message: 10/03/2009, 10h36
  3. [EJB3 Entity] Exception lors d'une tentative d'insertion
    Par Mister Nono dans le forum Java EE
    Réponses: 1
    Dernier message: 15/12/2008, 03h04
  4. Bug Excel lors d'une tentative de modif de code VBA
    Par aerodynamique dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/11/2007, 11h28
  5. Réponses: 10
    Dernier message: 13/11/2007, 13h04

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