在 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/