Problem mit dynamic_cast !!!



  • folgender code:

    struct m_SNode{
    
    		// Match Parameter
    		long lAhead;
    		long lBehind;
    		long lNextPos;				   // Zeit bis zum nächsten block ende!!
    
    		//Allgemein
    		int iModul;
    		int iIndex;					   // Index der Prozesse/Handling das wor diesem ist!!
    		SBlock oBlock;
    
    	};
    
    struct m_SNodeHandling : public m_SNode{
    
    		// Handlings Positionen, Get/Set Zeiten
    		int iStaPos;					// StartPosition!
    		int iScr;						// Quell Modul
    		int iDest;						// Ziel Modul
    		int iEndPos;					// Endanfahrposition
    		long lSetTime;					// Zeit an dem der Handler die Charge im DestModul palziert hat
    		long lGetTime;					// Zeit an dem der Handler die Charge im ScrModul entwedent hat
    
    	};
    
    	struct m_SNodeProcess : public m_SNode{
    
    		//Process
    		long lProcTime;								// Processzeit!!
    		long lOverProc;								// Erlaubte Overprozessierung!
    		long lCurrentOverProc;						// Aktuelle Overprozessierung!
    
    	};
    

    Error in folgender zeile:

    m_SNode *p=....			
    if(dynamic_cast<m_SNodeProcess*>(p)){.....}
    

    error C2683: dynamic_cast: 'CProcessParser::m_SNode' ist kein polymorpher Typ
    ......: Siehe Deklaration von 'CProcessParser::m_SNode'



  • Verpass deiner Klasse ne virtuelle Methode (am besten Destruktor).



  • hmm.. ok.. und wieso muss ich das machen?



  • Damit eine VTable angelegt wird.


Anmelden zum Antworten