做出了老師說的模板類,但是運行時提示runtime library,幫忙看下
//頭文件?MyQueue.h #ifndef?MYQUEUE_H #define?MYQUEUE_H #include?<iostream> #include?<string> using?namespace?std; template?<typename?T> class?MyQueue { public: MyQueue::MyQueue(int?queueCapacity) { m_iQueueCapacity?=?queueCapacity; m_iHead?=?0; m_iTail?=?0; m_iQueueLen?=?0; m_pQueue?=?new?T[m_iQueueCapacity]; } MyQueue::~MyQueue() { delete?m_pQueue; m_pQueue?=?NULL; } void?MyQueue::ClearQueue() { m_iHead?=?0; m_iTail?=?0; m_iQueueLen?=?0; } bool?MyQueue::QueueEmpty()?const { if?(m_iQueueLen?==?0) { return?true; } else { return?false; } //return?m_iQueueLen?==?0???true:false; } bool?MyQueue::QueueFull()?const { if?(m_iQueueLen?==?m_iQueueCapacity) { return?true; } else { return?false; } //return?m_iQueueLen==m_iQueueCapacity??true:false; } T?MyQueue::QueueLength()?const { return?m_iQueueLen; } bool?MyQueue::EnQueue(T?element) { if?(QueueFull()?==?true) { return?false; } else { m_pQueue[m_iTail]?=?element; m_iTail++; m_iTail?=?m_iTail%m_iQueueCapacity; m_iQueueLen++; return?true; } } bool?MyQueue::DeQueue(T?&?element) { if?(QueueEmpty()?==?true) { return?false; } else { element?=?m_pQueue[m_iHead]; m_iHead++; m_iHead?=?m_iHead%m_iQueueCapacity; m_iQueueLen--; return?true; } } void?MyQueue::QueueTraverse() { for?(int?i?=?m_iHead;i?<?m_iHead?+?m_iQueueLen;i++) { cout?<<?m_pQueue[i%m_iQueueCapacity]?<<?endl; } } private: T?*m_pQueue; //隊列數組指針 int?m_iQueueLen; //隊列元素個數 int?m_iQueueCapacity; //隊列數組容量 int?m_iHead; //隊列頭 int?m_iTail; //隊列尾 }; #endif
//源文件?demo.cpp #include?"MyQueue.h" int?main() { MyQueue<string>?*p=new?MyQueue<string>(4); p->EnQueue("A"); p->EnQueue("1"); p->EnQueue("6"); p->EnQueue("8"); p->QueueTraverse(); string?e="0"; p->DeQueue(e); cout?<<?e?<<?endl; p->DeQueue(e); cout?<<?e?<<?endl; p->QueueTraverse(); p->ClearQueue(); p->QueueTraverse(); p->EnQueue("c"); p->EnQueue("f"); p->QueueTraverse(); delete?p; p=NULL; }
錯誤提示如圖,求大神指點下哪里錯了
2017-02-15
改好了
類內定義函數不用加作用域限定符
以下代碼
還有,demo.cpp可能還有點小問題,不過影響不大,程序能正常運行
再來張圖