2012-02-03 58 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

請發表你得到錯誤信息的事情。 – 2012-02-03 13:57:12

回答

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

}; 
3

無論是向前聲明或移動_tmain的底部,還你沒有提供構造函數的實現。

1

編譯器讀取從上到下的代碼 - 它只能理解爲已經被宣佈

相關問題