對於那些誰是繼傳奇,我仍然在試圖定義有限狀態機,在規定的「適當的」 C++的方式&事件,模板。問題傳遞載體構造器
這段代碼有什麼問題?
template <typename StateTypeEnum, typename EventTypeEnum>
class Fsm
{
public:
Fsm(E_subSystems subSystem,
uint8_t instance,
const char * const fsmName,
const std::vector<State<StateTypeEnum, EventTypeEnum> >& states)
{}
其中
template <typename StateTypeEnum, typename EventTypeEnum>
class State
{
public:
State(INPUT E_subSystems subSystem,
StateTypeEnum stateId,
const char * const stateName,
const std::map<Event<EventTypeEnum>, EventHandlerFunction>& events)
{}
的只有錯誤消息
no matching function for call to "State<E_callControlStates, E_callControEvents>::State()" fsm.h line 98 C/C++ Problem
它看起來像錯誤消息指non-existent
默認構造狀態,但是爲什麼呢?
E_callControlStates, E_callControEvents
是用於聲明FSM的目的(沒有錯誤)的模板的參數。
很顯然,我忽視的東西&作出st00pid的n00b錯誤,但什麼?在此先感謝
我的不好。當然,它與我所看到的代碼無關 - 但它很少這樣做,是嗎?
類FSM聲明
private: State<StateTypeEnum, EventTypeEnum> _currentState;
時,它應該是
private: State<StateTypeEnum, EventTypeEnum> *_currentState;
對不起誤導你,夥計們,並感謝推導的問題,儘管。
儘量減少代碼仍然編譯,並給出錯誤的最小的子集。通過執行這個練習,你通常會發現錯誤。如果沒有,這將給你一個完美的解決方案,張貼在這裏。沒有一個可編輯的例子,除非你在10分鐘前有這個確切的問題(或者有一個好的內存),否則很難解決這個問題。 – 2010-02-03 09:13:45
...'仍然編譯並給出錯誤'...這是難以達到的東西:)但是的確,代碼缺少重要的部分,就像每個類中定義的成員一樣。 – 2010-02-03 09:18:32
會員如何影響它?只是好奇(記住,有一個單一的編譯器錯誤) – Mawg 2010-02-03 09:23:26