[問題] 跳出cannot instantiate abstract class

看板C_and_CPP作者 (我還存在耶)時間12年前 (2013/04/16 18:52), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/2 (看更多)
請問我在CreateBulkPipe的return new CBulkPipe(xxx)跳出下面錯誤 請問有人知道是什 麼問題嗎 謝謝 error C2259: 'CBulkPipe' : cannot instantiate abstract class 如下圖,太多參數我就打xxxx Cpipe.cpp: CBulkPipe::CBulkPipe(xxxxx) : CQueuedPipe(xxxx) // constructor for base class { DEBUGMSG( ZONE_PIPE && ZONE_VERBOSE, (TEXT("+CBulkPipe::CBulkPipe\n")) ); DEBUGCHK( !fIsLowSpeed ); // bulk pipe must be high speed DEBUGMSG( ZONE_PIPE && ZONE_VERBOSE, (TEXT("-CBulkPipe::CBulkPipe\n")) ); } CBulkPipe::~CBulkPipe( ) { DEBUGMSG( ZONE_PIPE && ZONE_VERBOSE, (TEXT("+CBulkPipe::~CBulkPipe\n")) ); ClosePipe(); DEBUGMSG( ZONE_PIPE && ZONE_VERBOSE, (TEXT("-CBulkPipe::~CBulkPipe\n")) ); } BOOL CBulkPipe::RemoveQHeadFromQueue() { ASSERT(m_pPipeQHead); return (m_pCEhcd->AsyncDequeueQH( m_pPipeQHead )!=NULL); } BOOL CBulkPipe::InsertQHeadToQueue() { ASSERT(m_pPipeQHead); return (m_pCEhcd->AsyncQueueQH( m_pPipeQHead )!=NULL); } CPipeAbs * CreateBulkPipe(xxxx) { return new CBulkPipe(lpEndpointDescriptor,fIsLowSpeed,fIsHighSpeed,bDeviceAddress,bHubAddress,bHubPort,ttContext,(CEhcd * const)pChcd); //!!!!!這邊跳出錯誤 error C2259: 'CBulkPipe' : cannot instantiate abstract class } ---------------------------------------------------------------------------------------------------- class CPipeAbs { // Abstract Pipe class. public: CPipeAbs(UCHAR const bEndpointAddress):m_bEndpointAddress(bEndpointAddress) {;}; virtual ~CPipeAbs() {;}; virtual HCD_REQUEST_STATUS OpenPipe( void ) = 0; virtual HCD_REQUEST_STATUS ClosePipe( void ) = 0; virtual HCD_REQUEST_STATUS IssueTransfer( xxx)=0; virtual HCD_REQUEST_STATUS AbortTransfer( xxx ) = 0; virtual HCD_REQUEST_STATUS IsPipeHalted( OUT LPBOOL const lpbHalted )=0; virtual void ClearHaltedFlag( void )=0; virtual void ResetEndPoint(void) = 0; virtual void ChangeMaxPacketSize( IN const USHORT ) {ASSERT(FALSE);}; virtual BOOL SetReservedDeviceAddr(UCHAR bReservedDeviceAddr)=0; virtual UCHAR GetReservedDeviceAddr()=0; UCHAR const m_bEndpointAddress; }; CPipeAbs * CreateBulkPipe(xxx); CPipeAbs * CreateControlPipe(xxx); CPipeAbs * CreateInterruptPipe(xxx); CPipeAbs * CreateIsochronousPipe(xxx);} ---------------------------------------------------------------------------------------------------------- Cpipe.h: class CBulkPipe : public CQueuedPipe { public: CBulkPipe(xxxxx); ~CBulkPipe(); virtual PIPE_TYPE GetType () { return TYPE_BULK; }; HCD_REQUEST_STATUS OpenPipe( void ); HCD_REQUEST_STATUS ClosePipe( void ); protected : virtual BOOL RemoveQHeadFromQueue(); virtual BOOL InsertQHeadToQueue() ; private: BOOL AreTransferParametersValid( const STransfer *pTransfer = NULL ) const; }; -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.0.175

04/16 20:28, , 1F
CBulkPipe 繼承 CQueuedPipe 有函式沒實作嗎?
04/16 20:28, 1F
文章代碼(AID): #1HRIs6aO (C_and_CPP)
文章代碼(AID): #1HRIs6aO (C_and_CPP)