基于模板的类变量
Template Based Class Variable
我正在开发一个游戏,我想创建一个基本 Actor 类,该类包含各种 Actor 类型之间共享的 Stat 值,但我在理解如何在没有基类具有与 actor 类型不同的 Stats 变量的情况下完成此操作时遇到了问题......
这正是我现在所做的(如代码所示(......但是,我想以某种方式使BaseActor"stats"类型在创建时成为PlayerStats或MonsterStats对象...这样,PlayerActor 和 MonsterActor 不再需要不同的"monster_stats"和"player_stats"对象,因为它们从 BaseActor 继承了正确的类型。这可能吗?我认为可以通过模板来完成,但我不太精通这些模板。
class BaseStats {
public:
int defense;
private:
};
class MonsterStats : public BaseStats {
public:
int drop_rate;
private:
};
class PlayerStats : public BaseStats {
public:
int attack_power;
private:
};
class BaseActor {
public:
BaseStats stats;
private:
};
class MonsterActor : public BaseActor {
public:
MonsterStats monster_stats;
private:
};
class PlayerActor : public BaseActor {
public:
PlayerStats player_stats;
private:
};
有PlayerStats
和MonsterStats
派生自BaseStats
。让每个派生BaseActor
的构造函数分配统计信息:
MonsterActor::MonsterActor()
{
m_stats = make_shared<MonsterStats>();
}
并有
std::shared_ptr<BaseStats> m_stats;
在基类中。
寻找杰弗里的答案以获得更好的方法。但是,由于您想通过模板执行此操作(不推荐(:-
template <typename T>
class BaseActor {
public:
T stats;
};
class MonsterActor : public BaseActor<MonsterStatus> {
public:
};
class PlayerActor : public BaseActor<PlayerStatus> {
public:
};
相关文章:
- 使用模板参数重载C++方法:如何使其适用于模板的子类?
- 基于模板的类变量
- 如何添加依赖于类本身的模板成员变量
- 类成员函数参数列表是否可以依赖于模板参数?
- 模板类变量作为非模板类的成员
- 在模板化类中返回模板化变量的方法
- 依赖于特定类类型的C++模板方法
- 将 c++ 类成员函数专用于模板类
- c ++如何将模板应用于模板类的孩子/朋友?
- 如何转发声明依赖于变量定义的类,而变体定义又依赖于模板化类?
- 是否可以通过模板指定抽象类变量类型
- 将模板<类 T> 应用于一行中的多个类型别名
- 仅专用于模板类的一个方法(部分)
- 对于具有两个模板化变量的模板化类,是否可以使一个 var 引用另一个 var
- 派生自非模板基类的模板类:无法访问基类变量
- 枚举和静态const成员变量在模板特征类中的用法
- 类函数的模板变量返回类型
- 在其他模板中使用 Any 类(类似于 boost::any)
- 当基类具有两个或多个模板参数时,C++11 别名基模板类变量在模板派生类中不起作用
- C++:将未知类变量赋予模板