有没有人知道一种方法,使派生类自动实例化一个模板类型的静态变量(这要么不需要派生类的编写器,或强迫他调用这个静态方法,以使派生类定义有效).
这可能是不可能理解的,我会尝试更好地定义它.
基本上我有一个全局工厂类,带有一个名为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) 基本上我有一个控制游戏角色攻击的状态机,其时间基于动画长度.
例如:
我从默认状态开始,如果玩家遇到攻击按钮,它会启动攻击,切换状态并根据攻击长度设置计时器.状态机变得更复杂但是当我考虑可以取消的充电攻击时,可以根据击中的内容移动到不同状态的攻击,并且每个州都有独特的方式来处理受到攻击的角色.目前我有大型的switch语句.我考虑过多态,但是对于每个状态都需要一个新类,其中有很多(例如,开始攻击,攻击和完成攻击都需要单独的状态).
switch语句有效,但它非常大,并且不像基于继承的系统那样容易修改.
有关良好实施的任何建议?
编辑:这是使用java.
我正在尝试用抽象工厂设计一个好的实体创建系统(根据http://www.dofactory.com/Patterns/PatternAbstract.aspx),但是当涉及到实例特定的参数时,我正在努力.
例如:我有两个抽象工厂,一个用于创建一个抛射物,另一个用于创建一个箱子
现在工厂可以是每种类型的一个实例,它从列表中传递一个抽象参数集(在基类中共享材料,大小等),类型特定参数将是射弹的速度和耐久性箱.
但是我正在努力的是,最后当我有这个抽象的工厂方法,我用字符串"BulletProjectile"和"WeakCrate"调用时,我需要提供特定于实例的参数,更重要的是它们是不同工厂的不同类型 - 对于弹丸,他们会有位置和速度,箱子只有位置.更糟糕的情况是用户或玩家正在创建板条箱或类似对象,并且能够定义其尺寸.我该怎么处理?
我已将此(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) 我在地图中存储了一些对象(用字符串散列),但是对象可以用另一个字符串分类.因此,我可以制作这些类别的地图,并为每个类别保留该类别中对象的另一个地图.
每当我从这个数据结构中插入或获取请求时,我总是会知道该类别.这更有效吗?看起来它会是这样,除了地图的查找时间是log(n)我相信,那么整体的好处是什么呢?