C++ Insertion d'une classe dans un plan contenant

J'ai une carte en C++ et je voudrais d'entrée de ma classe en tant que valeur, et une chaîne de caractères comme la clé.
Quand j'essaie, je reçois une erreur 'Scene_Branding' : illegal use of this type as an expression
Je reçois une utilisation illégale de ce type comme expression, et je n'arrive pas à trouver pourquoi. Voici un peu de code.

 string CurrentScene = "Scene_Branding";
 map<string, Scene> Scenes;
 Scenes.insert(std::make_pair("Scene_Branding", Scene_Branding));  //<-- Illegal Error parameter 2

et voici la Scène de l'image de Marque de l'en-tête..

#ifndef Scene_Branding_H
#define Scene_Branding_H

#include "Scene.h"
#include <iostream>
#include <string>


class Scene_Branding : Scene
{
public:
 Scene_Branding();
 ~Scene_Branding();
 void Draw();
};

#endif

et voici la Scène de l'en-tête..

#ifndef Scene_H
#define Scene_H

#include <iostream>
#include <string>

class Scene
{
public:
 Scene();
 ~Scene();
 virtual void Draw();

};

#endif

et voici là fichiers cpp.

Scène du rpc.

#include "Scene.h"

Scene::Scene()
{

}
Scene::~Scene()
{

}
void Scene::Draw(){
 std::cout << "Hey";
}

Scene_Branding rpc

#include "Scene_Branding.h"

Scene_Branding::Scene_Branding()
{

}

Scene_Branding::~Scene_Branding()
{

}

void Scene_Branding::Draw()
{
 std::cout << "Drawing from Scene_branding";
}
les deux réponses sont correctes, en soulignant que, vous avez besoin d'une instance de Scene_Branding non seulement par le type. une allusion plus faire de votre destructeur de la classe de base virtuelle
Pensez-vous vraiment dire à l'usage privé de l'héritage?

OriginalL'auteur Fouf | 2010-02-17