gpt4 book ai didi

c++ - std::map 成员函数指针?

转载 作者:IT老高 更新时间:2023-10-28 21:55:20 29 4
gpt4 key购买 nike

我需要实现 std::map<std::string, fn_ptr>对。函数指针是指向拥有映射的同一类的方法的指针。这个想法是直接访问这些方法,而不是实现一个开关或等价物。

(我使用 std::string 作为 map 的键)

我对 C++ 很陌生,所以任何人都可以发布一些伪代码或链接来讨论使用函数指针实现映射吗? (指向拥有 map 的同一类拥有的方法的指针)

如果您认为有更好的方法来解决我的问题,也欢迎提出建议。

最佳答案

这是我能想到的最简单的方法。请注意不要进行错误检查,并且可以将 map 设为静态。

#include <map>
#include <iostream>
#include <string>
using namespace std;

struct A {
typedef int (A::*MFP)(int);
std::map <string, MFP> fmap;

int f( int x ) { return x + 1; }
int g( int x ) { return x + 2; }


A() {
fmap.insert( std::make_pair( "f", &A::f ));
fmap.insert( std::make_pair( "g", &A::g ));
}

int Call( const string & s, int x ) {
MFP fp = fmap[s];
return (this->*fp)(x);
}
};

int main() {
A a;
cout << a.Call( "f", 0 ) << endl;
cout << a.Call( "g", 0 ) << endl;
}

关于c++ - std::map 成员函数指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1924844/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com