gpt4 book ai didi

c++根据配置定义类型/调用函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:07 24 4
gpt4 key购买 nike

在 C++ 中,是否有一种很好的技术或设计模式可以根据配置执行以下任务?

场景 #1:调用函数
如果一个配置说:

A:foo()

然后代码应该调用 A::foo() 假设 A 的对象已经可以访问。

场景 #2:声明类型

如果一个配置说:

bar:vector<std::string>

然后代码应该创建一个类型为 vector<std::string> 的对象在运行时。

字符串匹配方案不可取。

提前致谢。

最佳答案

您可以这样做,但需要大量的准备工作和先验知识。基本上您需要创建指向所有类方法的函数指针,这些方法必须具有相同的签名,并且您需要将所有这些信息保存在一个哈希表中。像这样:

class Foo {
public:
void MyMethod1(int _input);
void MyMethod2(int _input);
.
.
.
void MyMethodN(int _input);
};

typedef (Foo::*foo_func)(int);
class Acceptor{
public:
void Command(Foo &_foo, string _name, int _arg){
return _foo.*(m_MappedFunctions[ _name ])(_arg);
}
private:
unordered_map<String,foo_func> m_MappedFunctions;
};

在散列表中放置指向所有 Foo 方法的函数指针的位置。你看?它既不灵活,又需要在代码、配置文件和调用约定之间进行大量协调。

关于c++根据配置定义类型/调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2204794/

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