C++ Einfügen einer Klasse in einem map-container

Ich habe eine map in C++ und ich möchte Eingangs meiner Klasse als Wert und einen string als Schlüssel.
Wenn ich versuche, bekomme ich eine Fehlermeldung 'Scene_Branding' : illegal use of this type as an expression
Ich bekomme eine ungültige Verwendung dieses Typs als Ausdruck, und ich kann nicht scheinen, um herauszufinden, warum. Hier ist etwas code.

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

und hier ist die Szene Branding header..

#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

und hier ist die Szene header..

#ifndef Scene_H
#define Scene_H

#include <iostream>
#include <string>

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

};

#endif

und hier ist es-cpp-Dateien.

Szene cpp.

#include "Scene.h"

Scene::Scene()
{

}
Scene::~Scene()
{

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

Scene_Branding cpp

#include "Scene_Branding.h"

Scene_Branding::Scene_Branding()
{

}

Scene_Branding::~Scene_Branding()
{

}

void Scene_Branding::Draw()
{
 std::cout << "Drawing from Scene_branding";
}
  • beide Antworten sind richtig, darauf hinzuweisen, dass, müssen Sie eine Instanz der Scene_Branding nicht nur der Typ. ein Hinweis darauf, machen Sie Ihre Basisklasse destructor virtual
  • Meinst du das wirklich private Vererbung?
InformationsquelleAutor Fouf | 2010-02-17
Schreibe einen Kommentar