Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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/design-patterns/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++_Design Patterns_Scripting - Fatal编程技术网

C++ 存储/解偶联行为

C++ 存储/解偶联行为,c++,design-patterns,scripting,C++,Design Patterns,Scripting,我正在使用gameprogrammingpatterns.com上描述的类型对象模式,这正是我需要避免数据冗余并简化硬编码的原因。简言之,我有这样的想法: class Action { // ... ActionType& Type; } 其中ActionType是保存此特定类型操作的静态数据的类型对象。将有多个操作实例,因此与在每个操作实例中存储类型数据相比,内存开销大大减少。它还可以从脚本中加载操作类型参数,但它不适用于行为 我发现有必要从行动中得出支持不同行为的结论,

我正在使用gameprogrammingpatterns.com上描述的类型对象模式,这正是我需要避免数据冗余并简化硬编码的原因。简言之,我有这样的想法:

class Action
{
   // ...
   ActionType& Type;
}
其中ActionType是保存此特定类型操作的静态数据的类型对象。将有多个操作实例,因此与在每个操作实例中存储类型数据相比,内存开销大大减少。它还可以从脚本中加载操作类型参数,但它不适用于行为

我发现有必要从行动中得出支持不同行为的结论,这种行为违背了目的。我当然可以使用某种类型的可调用对象来参数化ActionType对象中的行为,但这仍然需要硬编码

这样的事情怎么办?脚本编写?如果是这样的话,是否可以在发行版中预编译脚本以获得更好的性能


更新:为了澄清,每个操作都有一个OnUpdate函数,我想为每种类型的操作自定义它,而不涉及继承和硬编码。

看起来像boost的acandidate::AnyThank,但这有什么帮助?我认为boost::any是任何类型变量的一种占位符。我建议您展示更多的代码,因为我不太明白问题的确切含义。在底部添加了一些更新。