C++ 存储/解偶联行为
我正在使用gameprogrammingpatterns.com上描述的类型对象模式,这正是我需要避免数据冗余并简化硬编码的原因。简言之,我有这样的想法:C++ 存储/解偶联行为,c++,design-patterns,scripting,C++,Design Patterns,Scripting,我正在使用gameprogrammingpatterns.com上描述的类型对象模式,这正是我需要避免数据冗余并简化硬编码的原因。简言之,我有这样的想法: class Action { // ... ActionType& Type; } 其中ActionType是保存此特定类型操作的静态数据的类型对象。将有多个操作实例,因此与在每个操作实例中存储类型数据相比,内存开销大大减少。它还可以从脚本中加载操作类型参数,但它不适用于行为 我发现有必要从行动中得出支持不同行为的结论,
class Action
{
// ...
ActionType& Type;
}
其中ActionType是保存此特定类型操作的静态数据的类型对象。将有多个操作实例,因此与在每个操作实例中存储类型数据相比,内存开销大大减少。它还可以从脚本中加载操作类型参数,但它不适用于行为
我发现有必要从行动中得出支持不同行为的结论,这种行为违背了目的。我当然可以使用某种类型的可调用对象来参数化ActionType对象中的行为,但这仍然需要硬编码
这样的事情怎么办?脚本编写?如果是这样的话,是否可以在发行版中预编译脚本以获得更好的性能
更新:为了澄清,每个操作都有一个OnUpdate函数,我想为每种类型的操作自定义它,而不涉及继承和硬编码。看起来像boost的acandidate::AnyThank,但这有什么帮助?我认为boost::any是任何类型变量的一种占位符。我建议您展示更多的代码,因为我不太明白问题的确切含义。在底部添加了一些更新。