我做了所謂的隊列類模板,但我在試圖用一個指針叫工人作爲類型另一個類實例化它的問題。 Queue<Worker*>
如何定義指針和動態內存分配的模板?
我認爲這個問題是這種具體的隊列方法:
// Add item to queue
template <typename Type>
bool Queue<Type>::enqueue(const Type& item)
{
if (isfull())
return false;
Node* add = new Node; // create node
// on failure, new throws std::bad_alloc exception
add->item = item; // set node pointers (shallow copying!!!!!)
add->next = nullptr;
items++;
if (front == nullptr) // if queue is empty,
front = add; // place item at front
else
rear->next = add; // else place at rear
rear = add; // have rear point to new node
return true;
}
在類型參數的情況下,是一個指向我需要複製指向的值,而不是地址(我使用動態內存管理)來避免程序崩潰。
我不知道如何與一個模板解決這個問題。
任何幫助?
以及最通用的容器不知道他們持有的指針,因此他們會做淺複製 –
如果您覺得喜歡冒險,可以深入研究[Boost Pointer Containers]的源代碼(http://www.boost.org/doc/libs/1_51_0/libs/ptr_container/doc/ptr_container.html)並查看他們這樣做。 – jrok