Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将字符串映射到C++; 我正在C++编写一个COCOS2DX场景。我希望创建一组基于按钮按下的字符串方向,这将在我更新场景时执行。问题是,我需要将这些字符串与类的方法关联起来,这些方法可以被子类重写,以基于按钮按下来定制行为。我正在努力创建字符串和指向场景类方法的指针之间的映射_C++_Cocos2d X_Member Function Pointers - Fatal编程技术网

将字符串映射到C++; 我正在C++编写一个COCOS2DX场景。我希望创建一组基于按钮按下的字符串方向,这将在我更新场景时执行。问题是,我需要将这些字符串与类的方法关联起来,这些方法可以被子类重写,以基于按钮按下来定制行为。我正在努力创建字符串和指向场景类方法的指针之间的映射

将字符串映射到C++; 我正在C++编写一个COCOS2DX场景。我希望创建一组基于按钮按下的字符串方向,这将在我更新场景时执行。问题是,我需要将这些字符串与类的方法关联起来,这些方法可以被子类重写,以基于按钮按下来定制行为。我正在努力创建字符串和指向场景类方法的指针之间的映射,c++,cocos2d-x,member-function-pointers,C++,Cocos2d X,Member Function Pointers,以下是适用的代码 在场景中 std::map<std::string, void (Scene::*)()> correlateDirections; std::map<std::string, void const (Scene::*)()> correlateDirections; std::map correlateDirections; In Scene.cpp correlateDirections["c"] = &this->c void

以下是适用的代码

在场景中

std::map<std::string, void (Scene::*)()> correlateDirections;
std::map<std::string, void const (Scene::*)()> correlateDirections;
std::map correlateDirections;
In Scene.cpp

correlateDirections["c"] = &this->c

void Scene::c() {
    std::cout << "c" << std::endl;
}
correlateDirections[“c”]=&this->c
void场景::c(){

std::cout因为它是指向成员函数的指针,所以它不是自包含的,要调用它,您需要类场景的对象和对象。请参见下面的示例:

#include <map>
#include <string>
#include <iostream>

class Scene
{
public:
    void runMe() { std::cout << "runMe" << std::endl; }
};

int main()
{
    std::map<std::string, void (Scene::*)()> sfMap;
    Scene scene;
    sfMap["runMe"] = &Scene::runMe;

    // call via reference to object
    (scene.*sfMap["runMe"])();

    // call via pointer to object
    Scene* p = &scene;
    (p->*sfMap["runMe"])();    

    return 0;
}
#包括
#包括
#包括
课堂场景
{
公众:

void runMe()
。如果您想使用
this
作为实例:
(this->*funcPointer)(args)
correlateDirections[string]
的返回类型是一个迭代器。获取它的内部数据:
(this->*(*correlateDirections[string])()
,这很好,谢谢您地图是类成员