小编dee*_*146的帖子

派生类型的自动静态调用

有没有人知道一种方法,使派生类自动实例化一个模板类型的静态变量(这要么不需要派生类的编写器,或强迫他调用这个静态方法,以使派生类定义有效).

这可能是不可能理解的,我会尝试更好地定义它.

基本上我有一个全局工厂类,带有一个名为registerType的模板化函数.对于从Entity派生的每个类,我需要使用派生类型的模板参数调用此函数.目前,我必须在某个init函数中手动执行此操作,这会导致对此函数的大量调用,这违反了我的模板原则.

所以我有这个:

class Factory
{
  template <typename EntityType>
  registerEntityType();
};

void someInitFunction()
{
   /// All of these are derived from Entity
  gFactory.registerEntityType<EntityType1>();
  gFactory.registerEntityType<EntityType2>();
  gFactory.registerEntityType<EntityType3>();
  /// and so on
}
Run Code Online (Sandbox Code Playgroud)

而我宁愿这样:

class Factory
{
  template <typename EntityType>
  registerEntityType();
};

class Entity // Abstract
{
    /// This function should be called automatically with the derived 
    /// type as a parameter
    SomeStaticConstructor<MDerivedType>() 
    {
      gFactory.registerEntityType<MDerivedType>();
    }
};
Run Code Online (Sandbox Code Playgroud)

编辑:这是不起作用的静态重复模板代码:

这是我的基类,以及用于自动注册东西的类

template <typename DerivedType>
class Registrar
{
    public:
        Registrar();
        void check();
};
template <typename …
Run Code Online (Sandbox Code Playgroud)

c++ static templates

12
推荐指数
3
解决办法
1591
查看次数

实现大型状态机的最佳方法是什么?

基本上我有一个控制游戏角色攻击的状态机,其时间基于动画长度.

例如:

我从默认状态开始,如果玩家遇到攻击按钮,它会启动攻击,切换状态并根据攻击长度设置计时器.状态机变得更复杂但是当我考虑可以取消的充电攻击时,可以根据击中的内容移动到不同状态的攻击,并且每个州都有独特的方式来处理受到攻击的角色.目前我有大型的switch语句.我考虑过多态,但是对于每个状态都需要一个新类,其中有很多(例如,开始攻击,攻击和完成攻击都需要单独的状态).

switch语句有效,但它非常大,并且不像基于继承的系统那样容易修改.

有关良好实施的任何建议?

编辑:这是使用java.

java state-machine switch-statement

10
推荐指数
1
解决办法
5691
查看次数

抽象工厂与抽象参数?

我正在尝试用抽象工厂设计一个好的实体创建系统(根据http://www.dofactory.com/Patterns/PatternAbstract.aspx),但是当涉及到实例特定的参数时,我正在努力.

例如:我有两个抽象工厂,一个用于创建一个抛射物,另一个用于创建一个箱子

现在工厂可以是每种类型的一个实例,它从列表中传递一个抽象参数集(在基类中共享材料,大小等),类型特定参数将是射弹的速度和耐久性箱.

但是我正在努力的是,最后当我有这个抽象的工厂方法,我用字符串"BulletProjectile"和"WeakCrate"调用时,我需要提供特定于实例的参数,更重要的是它们是不同工厂的不同类型 - 对于弹丸,他们会有位置和速度,箱子只有位置.更糟糕的情况是用户或玩家正在创建板条箱或类似对象,并且能够定义其尺寸.我该怎么处理?

c++ factory-pattern

8
推荐指数
1
解决办法
2299
查看次数

如何从静态构建中使用FFMpeg的CLI界面?

我已将此(https://github.com/kewlbear/FFmpeg-iOS-build-script)版本的ffmpeg添加到我的项目中.我无法在包含的标题中看到库的入口点.

如何访问独立应用程序所具有的基于文本命令的系统,或者等效的?

如果有人能指出我允许你在没有命令行界面的情况下使用FFmpeg的文档,我也会很高兴.

这就是我想要执行的东西(我使用CLI版本的ffmpeg在windows和android上工作)

ffmpeg -framerate 30 -i snap%03d.jpg -itsoffset 00:00:03.23333 -itsoffset 00:00:05 -i soundEffect.WAV -c:v libx264 -vf fps=30 -pix_fmt yuv420p result.mp4
Run Code Online (Sandbox Code Playgroud)

ffmpeg objective-c ios

3
推荐指数
1
解决办法
376
查看次数

拥有地图地图或非常大的地图会更有效吗?

我在地图中存储了一些对象(用字符串散列),但是对象可以用另一个字符串分类.因此,我可以制作这些类别的地图,并为每个类别保留该类别中对象的另一个地图.

每当我从这个数据结构中插入或获取请求时,我总是会知道该类别.这更有效吗?看起来它会是这样,除了地图的查找时间是log(n)我相信,那么整体的好处是什么呢?

c++ map

2
推荐指数
1
解决办法
425
查看次数