<div>With a simple class definition like the following, it seems that SIP tries to wrap SIPTransaction::States using a sip generated class, but of course that class is not created for ABCs. I am using the latest SIP snapshot, SIP 4.12.2-snapshot-ecb3e795382e, to test this code. </div>
<div><br><br>class SIPTransaction /Abstract/<br>{<br> public:<br> ~SIPTransaction();<br> virtual SIPTransaction * CreateDuplicate() const = 0;<br> <br> protected:<br><br> enum States {<br> NotStarted,<br>
Trying,<br> Proceeding,<br> Cancelling,<br> Completed,<br> Terminated_Success,<br> Terminated_Timeout,<br> Terminated_RetriesExceeded,<br> Terminated_TransportError,<br> Terminated_Cancelled,<br>
Terminated_Aborted,<br> NumStates<br> };</div><div><br> virtual void SetTerminated(States newState);<br>};<br><br></div><div><br></div><div>Offending generated code:</div><div><br></div><div>static sipEnumMemberDef enummembers_SIPTransaction[] = {<br>
{sipName_Cancelling, sipSIPTransaction::Cancelling, 241},<br> {sipName_Completed, sipSIPTransaction::Completed, 241},<br> {sipName_NotStarted, sipSIPTransaction::NotStarted, 241},<br> {sipName_NumStates, sipSIPTransaction::NumStates, 241},<br>
{sipName_Proceeding, sipSIPTransaction::Proceeding, 241},<br> {sipName_Terminated_Aborted, sipSIPTransaction::Terminated_Aborted, 241},<br> {sipName_Terminated_Cancelled, sipSIPTransaction::Terminated_Cancelled, 241},<br>
{sipName_Terminated_RetriesExceeded, sipSIPTransaction::Terminated_RetriesExceeded, 241},<br> {sipName_Terminated_Success, sipSIPTransaction::Terminated_Success, 241},<br> {sipName_Terminated_Timeout, sipSIPTransaction::Terminated_Timeout, 241},<br>
{sipName_Terminated_TransportError, sipSIPTransaction::Terminated_TransportError, 241},<br> {sipName_Trying, sipSIPTransaction::Trying, 241},<br>};<br></div><div><br></div><div>Of course, commenting out the code under protected stops it from being generated, and causing compiler errors.</div>