c++ - 基于类的状态机?

标签 c++ class templates state-machine

在 C++ 中,我尝试基于类为游戏制作一个简单的状态机。

stateMan.setState<mainMenuState>();

我有一个声明如下的类:

class stateManager
{
  ...
  template <class T>
  void setState(void);
}

测试代码为:

template <class T>
void stateManager::setState<T>(void)
{
  T* blah = new T;
  delete blah;
}

很明显,自 function template partial specialization ‘setState<T>’ is not allowed 以来,这是行不通的.

除了非 OO 之外,还有更好的方法吗?

最佳答案

成员函数模板的定义应该是这样的:

template <class T>
void stateManager::setState(void)
{
   //...
}

也就是说,它应该是简单的setState而不是 setState<T> .后一种语法用于函数模板特化。自 T是类型参数,特化将被视为函数部分模板特化,这是不允许的。

关于c++ - 基于类的状态机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7293123/

相关文章:

c++ - 如何将 Boost multi_array 传递给函数?

c++ - 应用程序需要 OS X >= Lion

css - 当使用 Vue.js 将文本设置为 "Completed"时,动态添加 css 类到 span 标记

c++ - 在编译时使用 C++ 模板在 AbstractFactory 中动态注册构造方法

c++ - 如何将工厂模式与仿函数一起使用?

c++ - Open gl es - 如何提高性能、渲染到纹理、混合

c++ - 指针包装类 - 表现得像一个原始指针

php - OOP:您将如何在 OOP 中建立艺术家、专辑和歌曲关系

java - 检查子类的属性

c++ - 有没有更好的方法从静态和非静态函数返回相同的字符串文字?