我有一个 C++ 地图,我希望输入我的类作为值,并输入一个字符串作为键。
当我尝试这样做时,出现错误'Scene_Branding' : illegal use of this type as an expression
我非法使用这种类型作为表达式,但我似乎无法找出原因。这是一些代码。
string CurrentScene = "Scene_Branding";
map<string, Scene> Scenes;
Scenes.insert(std::make_pair("Scene_Branding", Scene_Branding)); //<-- Illegal Error parameter 2
这是场景品牌标题..
#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
这是场景标题..
#ifndef Scene_H
#define Scene_H
#include <iostream>
#include <string>
class Scene
{
public:
Scene();
~Scene();
virtual void Draw();
};
#endif
这是cpp 文件。
场景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";
}
首先,不要将对象本身存储在映射中,而是存储指向对象的指针。
其次,您需要将 Scene_Branding 的实例提供给 std::make_pair,而不是类本身。
编辑:
以下是存储指针的方法:
string CurrentScene = "Scene_Branding";
map<string, Scene*> Scenes;
Scenes.insert(std::make_pair("Scene_Branding", new Scene_Branding()));
但是,既然你问了这类问题,我建议你阅读一本好的 C++ 书籍,以进一步掌握指针等概念。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)