作業分配要求爲Heap類重載寄售操作符,該類用於存儲指向每個節點上的隊列的指針,以嘗試模擬應急空間優先級隊列。重載賦值運算符C++
到目前爲止,這裏是代碼,我想出了:
template <typename T>
Heap<T>& Heap<T>::operator=(const Heap<T> & rhs)
{
//check for self-assignment
if(this != &rhs)
{
//delete memory
for(int i = 0; i < MAX_HEAP; i++)
{
//delete queue at position i, set pointer to NULL
delete items[i];
items[i] = NULL;
}//end for
delete * items;
//create new memory to hold copy of rhs
//error occurs here
items = new queue<T> *[MAX_HEAP] ;
for(int i = 0; i < MAX_HEAP; i++)
items[i] = rhs.items[i];
//assigns new stuff to this heap
size = rhs.size;
nodes = rhs.nodes;
}//end if
return *this;
}//end =
的項目在頭文件中聲明爲這樣:
queue<T>* items[MAX_HEAP];
和標準庫隊列的一個實例。
我不太清楚如果我使用正確的語法來創建一個新的動態數組隊列指針。
我得到一個錯誤,指出:
error C2440: '=' : cannot convert from 'std::queue<_Ty> **' to 'std::queue<_Ty> *[50]'
任何想法,以什麼可能導致它,我該怎麼解決呢?
對於顯着更少的痛苦,請使用[copy-and-swap idiom](http://stackoverflow.com/questions/3279543/what-is-the-copy-and-swap-idiom)。 – 2012-04-26 20:34:04
爲什麼不只是使用'std :: vector'而不是C數組和手動內存管理?將標準庫類和C數組混合在一起是愚蠢的矯枉過正。 – Griwes 2012-04-26 20:34:29
堆將如何使用隊列指針的動態數組? – 2012-04-26 20:43:43