Virtuell Methode Problem.



  • Hallo,

    ich habe folgendes Problem, ich kriege bei dem Kompilieren zwei Fehler:
    C2061 Bezeichner FSM( bei der state.h)
    C2660 Bei der implementation FSM Methoden (bei m_state->import(*this))

    #ifndef FSM_H
    #define	FSM_H
    
    #include "state.h"
    
    class  FSM 
    {
    public:
    
    	FSM();
    	FSM(State* initFSM);
    	void discard();
    	void import();
    	void capture();
    	void accept();
    	void cancel();
    	void modify();
    
    	void isInProcess();
    	void changeState(State* newState);	
    private:
    	State* m_state;
    
    };
    
    #endif	/* FSM_H */
    
    #include "stdafx.h"
    
    #include "fsm.h"
    FSM :: FSM()
    {
    
    }
    
    FSM :: FSM(State* initFSM)
    {	
    	m_state = initFSM;	
    }
    void FSM :: import()
    {
    	m_state->import( *this );
    }
    void FSM :: accept()
    {
    	m_state->accept( *this );
    }
    void FSM :: capture()
    {
    	m_state->capture( *this );
    }
    void FSM :: discard()
    {
    	m_state->discard( *this );
    }
    void FSM :: cancel()
    {
    	m_state->cancel( *this );
    }
    void FSM :: modify()
    {
    	m_state->modify( *this );
    }
    // Noch zu implementieren!!!
    void FSM :: isInProcess()
    {
    
    }
    
    void FSM :: changeState( State* newState )
    {
    	m_state = newState;
    
    }
    
    #ifndef STATE_H
    #define	STATE_H
    
    //#include "fsm.h"
    
    class State{
    
    		public:
    			 virtual void discard(FSM&);// allows changing FSM object state
    			 virtual void import(FSM&);
                 virtual void capture(FSM&);
    			 virtual void accept(FSM&);
    			 virtual void modify(FSM&);
    			 virtual void cancel(FSM&);
    
    		};
    #endif	/* STATE_H */
    

    Kann mir jemand helfen, Was mache ich falsch?



  • Dieser Thread wurde von Moderator/in rüdiger aus dem Forum Rund um die Programmierung in das Forum C++ (auch C++0x und C++11) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • du musst "State" mitteilen, dass es eine Klasse "FSM" gibt:

    class FSM;
    
    class State {...}
    

    In diesem Fall reicht im header die forward-Deklaration, weil du nur Referenzen verwendest. In der cpp-Datei musst du dann den header inkludieren.



  • danke, das hat Problem gelöst.


Anmelden zum Antworten