【发布时间】:2018-09-28 01:01:02
【问题描述】:
我正在编写一个游戏,我有一个名为 GameObject 的界面。
这个游戏对象是由派生对象实现的,比如行星、彗星、小行星等。现在我需要这些对象在不同功能中的 type_index。
为了实现这一点,我在 GameObject 中定义了虚函数,并希望使用具有派生类类型的模板模式。不幸的是我收到错误 错误:非模板结构“GameObjectImpl”的显式特化 模板结构 GameObjectImpl : 游戏对象 ^
以下是源码
struct GameObject
{
virtual ~GameObject() = default;
virtual type_index type() const = 0;
};
template <typename T> struct GameObjectImpl<T> : GameObject //error
{
type_index type() const override
{
return typeid(T);
}
};
struct Planet : GameObjectImpl<Planet>{};
struct Asteriod : GameObjectImpl<Asteriod>{};
你能告诉我如何摆脱这个错误。请注意我正在学习模板模式所以只想使用模板
【问题讨论】:
-
template <typename T> struct GameObjectImpl : GameObject { ... };删除<T> -
@IgorTandetnik 这看起来更像是一个答案而不是评论。