为什么我的简单c ++代码不能编译?得到未声明的标识符错误。
我看不出问题
非常感谢
int _tmain(int argc, _TCHAR* argv[])
{
StateMachine<States,Triggers> sm;
return 0;
}
enum States
{
New,
Complete
};
enum Triggers
{
CreateNew,
MoveToComplete
};
template <class TState, class TTrigger> class StateMachine
{
public:
StateMachine();
};
答案 0 :(得分:3)
要么向前声明要么将_tmain
移到底部,你也没有为构造函数提供实现。
答案 1 :(得分:1)
你必须向前声明StateMachine
类,否则编译器现在不知道如何处理该标识符,因为它还没有被告知他实际是什么,但至少,或者至少,它存在。
template<class TState, class TTrigger> class StateMachine;
int _tmain(int argc, _TCHAR* argv[])
{
StateMachine<States,Triggers> sm;
return 0;
}
// ...
template <class TState, class TTrigger> class StateMachine
{
public:
StateMachine();
};
答案 2 :(得分:1)
编译器从上到下读取代码 - 它只能理解已经声明的内容