2012-02-03 19 views
-2

私の単純なC++コードがコンパイルされないのはなぜですか?宣言されていない識別子エラーを取得します。私の単純な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(); 

}; 
+4

宣言されているものを理解することができます。 –

答えて

1

StateMachineクラスをforward-declareする必要があります。それ以外の場合、コンパイラは、実際には何か、または少なくとも存在するかどうかを彼に伝えていないので、

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(); 

}; 
3

おかげでどちらの前進もあなたは、コンストラクタの実装を提供していませんでした、下に_tmainを宣言するか、移動の問題を見ることができません。

1

コンパイラは、上から下に向かってコードを読み取る - それは、すでにあなたが取得しているエラーメッセージを投稿してください

関連する問題